Hibernate 使用 Annotation 5(一对多双向关联)
Group.java代码:
package com.jlee05.one2moneyshuangxiang;import java.util.HashSet;import java.util.Set;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.OneToMany;import javax.persistence.Table;@Entity@Table(name="T_GROUP")public class Group {private int id ;private String name ;private Set<User> user = new HashSet<User>() ;@Id@GeneratedValue(strategy=GenerationType.AUTO)public int getId() {return id;}public void setId(int id) {this.id = id;}@Column(name="name" , length=32)public String getName() {return name;}public void setName(String name) {this.name = name;}@OneToMany(mappedBy="group")@JoinColumn(name="groupId")public Set<User> getUser() {return user;}public void setUser(Set<User> user) {this.user = user;}}?
?
User.java代码:
package com.jlee05.one2moneyshuangxiang;import javax.persistence.CascadeType;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.FetchType;import javax.persistence.GeneratedValue;import javax.persistence.GenerationType;import javax.persistence.Id;import javax.persistence.JoinColumn;import javax.persistence.ManyToOne;import javax.persistence.Table;@Entity@Table(name="T_USER")public class User {private int id ;private String name ;Group group = new Group() ;@Id@GeneratedValue(strategy=GenerationType.AUTO)public int getId() {return id;}public void setId(int id) {this.id = id;}@Column(name="name" , length=32)public String getName() {return name;}public void setName(String name) {this.name = name;}@ManyToOne(cascade={CascadeType.ALL} , fetch=FetchType.LAZY)@JoinColumn(name="groupId")public Group getGroup() {return group;}public void setGroup(Group group) {this.group = group;}}?
?
RelationsTest.java代码:
package com.jlee05.one2moneyshuangxiang;import junit.framework.TestCase;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.cfg.AnnotationConfiguration;import org.junit.Test;public class RelationsTest extends TestCase {@Testpublic void testShuangXiang() {SessionFactory sf = new AnnotationConfiguration().configure().buildSessionFactory();Session session = sf.getCurrentSession() ;session.beginTransaction() ;session.getTransaction().commit() ;}}?
?
hibernate.cfg.xml文件:
<?xml version='1.0' encoding='utf-8'?><!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"><hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/hibernate</property> <property name="connection.username">root</property> <property name="connection.password">root</property> <!-- JDBC connection pool (use the built-in) --> <property name="connection.pool_size">100</property> <!-- SQL dialect --> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <!-- Enable Hibernate's automatic session context management --> <property name="current_session_context_class">thread</property> <!-- Disable the second-level cache --> <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property> <!-- Echo all executed SQL to stdout --> <property name="show_sql">true</property> <property name="format_sql">true</property> <!-- Drop and re-create the database schema on startup --> <!--<property name="hbm2ddl.auto">create</property>--><mapping class="com.jlee05.one2moneyshuangxiang.User"/><mapping class="com.jlee05.one2moneyshuangxiang.Group"/> </session-factory></hibernate-configuration>
?