【hibernate框架】一对多(多对一)双向关联(XML实现)

前端之家收集整理的这篇文章主要介绍了【hibernate框架】一对多(多对一)双向关联(XML实现)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

用户和组的关联,一个用户只能属于一个组,一个组可以拥有多个用户

User.java:

  1. package cn.edu.hpu.one2many;
  2.  
  3.  
  4. public class User {
  5. private int id;
  6. private String name;
  7. private Group group;
  8. public Group getGroup() {
  9. return group;
  10. }
  11. public void setGroup(Group group) {
  12. this.group = group;
  13. }
  14.  
  15.  
  16. public int getId() {
  17. return id;
  18. }
  19. public void setId(int id) {
  20. this.id = id;
  21. }
  22. public String getName() {
  23. return name;
  24. }
  25. public void setName(String name) {
  26. this.name = name;
  27. }
  28. }


Group.java:
  1. package cn.edu.hpu.one2many;
  2.  
  3.  
  4. import java.util.HashSet;
  5. import java.util.Set;
  6.  
  7.  
  8. public class Group {
  9. private int id;
  10. private String name;
  11. private Set<User> users=new HashSet<User>();
  12. //选择set的原因是因为,set互相之间不会有重复的
  13. //跟数据库模型比较匹配
  14. public int getId() {
  15. return id;
  16. }
  17. public void setId(int id) {
  18. this.id = id;
  19. }
  20. public String getName() {
  21. return name;
  22. }
  23. public void setName(String name) {
  24. this.name = name;
  25. }
  26. public Set<User> getUsers() {
  27. return users;
  28. }
  29. public void setUsers(Set<User> users) {
  30. this.users = users;
  31. }
  32. }


配置文件
User.hbm.xml:
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5.  
  6.  
  7. <hibernate-mapping package="cn.edu.hpu.one2many">
  8. <class name="User" table="m_user" dynamic-update="true">
  9. <!-- 主键 这里的主键名字刚好也是'id'-->
  10. <id name="id" column="id">
  11. <generator class="native"></generator>
  12. </id>
  13. <property name="name"></property>
  14. <!-- 两边的group配置的colum必须一样 -->
  15. <many-to-one name="group" column="groupId"></many-to-one>
  16. </class>
  17. </hibernate-mapping>


Group.hbm.xml:
  1. <?xml version="1.0"?>
  2. <!DOCTYPE hibernate-mapping PUBLIC
  3. "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
  4. "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
  5.  
  6.  
  7. <hibernate-mapping package="cn.edu.hpu.many2one">
  8. <class name="Group" table="x_group" dynamic-update="true">
  9. <!-- 主键 这里的主键名字刚好也是'id'-->
  10. <id name="id" column="id">
  11. <generator class="native"></generator>
  12. </id>
  13. <property name="name"></property>
  14. <set name="users">
  15. <key column="groupId"></key><!-- 指定关联字段的名字叫什么 -->
  16. <one-to-many class="cn.edu.hpu.one2many.User"/>
  17. </set>
  18. </class>
  19. </hibernate-mapping>


在hibernate.cfg.xml中添加
<mapping resource="cn/edu/hpu/many2many/Group.hbm.xml"/>
<mapping resource="cn/edu/hpu/many2many/User.hbm.xml"/>


生成sql语句:
alter table m_user
drop
foreign key FKBF71E05DB11F7732


drop table if exists m_group


drop table if exists m_user


create table m_group (
id integer not null auto_increment,
name varchar(255),
primary key (id)
)


create table m_user (
id integer not null auto_increment,
groupId integer,
primary key (id)
)


alter table m_user
add index FKBF71E05DB11F7732 (groupId),
add constraint FKBF71E05DB11F7732
foreign key (groupId)

references m_group (id)


转载请注明出处:http://blog.csdn.net/acmman

猜你在找的XML相关文章