rss· 投稿· 设为首页· 加入收藏· 繁體版
当前位置: 火魔网 » 程序开发 » JavaEE

hibernate多对一

package com.jonsion.hibernate;
import java.util.Date;
public class Group { private int id; private String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.jonsion.hibernate;
import java.util.Date;
public class User { private int id; private String name; private Group group; public Group getGroup() { return group; } public void setGroup(Group group) { this.group = group; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
package com.jonsion.hibernate;
import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration;
public class HibernateUtils { private static SessionFactory factory; static{ // public Configuration configure() throws HibernateException { // configure( "/hibernate.cfg.xml" ); // return this; // } try{ Configuration cfg=new Configuration().configure(); factory=cfg.buildSessionFactory(); }catch(Exception ex){ ex.printStackTrace(); } } public static SessionFactory getSessionFactory(){ return factory; } public static Session getSession(){ return factory.openSession(); } public static void closeSession(Session session){ if(session!=null){ if(session.isOpen()){ session.close(); } } } } package com.jonsion.hibernate;
import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport;
public class Hbm2Ddl { public static void main(String[] args) { //读取hibernate.cfg.xml配置文件 Configuration cfg=new Configuration().configure(); //根据对象生成DDL和相应的表 SchemaExport se=new SchemaExport(cfg); se.create(true, true); } } <?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.jonsion.hibernate"> <class name="Group" table="T_Group"> <id name="id" column="F_id"> <generator class="native"/> </id> <property name="name" column="F_name" length="20" not-null="true" /> </class> </hibernate-mapping>
<?xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC       "-//Hibernate/Hibernate Mapping DTD 3.0//EN"           "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="com.jonsion.hibernate"> <class name="User" table="T_User"> <id name="id" column="F_id" length="32"> <generator class="native" /> </id> <property name="name" column="F_name" length="20"  not-null="true" /> <!--  <many-to-one name="group" column="groupid" cascade="all"/> --> <many-to-one name="group" column="groupid"/> </class> </hibernate-mapping>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration> <session-factory > <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_many2one</property> <property name="connection.useUnicode">true</property>  <property name="connection.characterEncoding">UTF-8</property>  <property name="hibernate.connection.username">root</property> <property name="hibernate.connection.password"></property> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <property name="hibernate.hbm2ddl.auto">true</property> <property name="show_sql">true</property> <mapping resource="com/jonsion/hibernate/User.hbm.xml"/> <mapping resource="com/jonsion/hibernate/Group.hbm.xml"/> </session-factory> </hibernate-configuration>
package com.jonsion.hibernate;
import java.util.Date;
import junit.framework.TestCase;
import org.hibernate.Session; import org.hibernate.Transaction;
public class Many2oneTest extends TestCase {
public void testSave1() { Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); Group group = new Group(); group.setName("重案组");
User user1 = new User(); user1.setName("马大哈"); user1.setGroup(group);
User user2 = new User(); user2.setName("神枪手"); user2.setGroup(group);
//不能保存,会抛出TransientObjectException异常 //因为group为Transient状态,未分配oid session.save(user1); session.save(user2); tx.commit(); } catch (Exception ex) { ex.printStackTrace(); tx.rollback(); } finally { HibernateUtils.closeSession(session); }
} public void testSave2() { Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); Group group = new Group(); group.setName("重案组");
session.save(group); User user1 = new User(); user1.setName("马大哈"); user1.setGroup(group);
User user2 = new User(); user2.setName("神枪手"); user2.setGroup(group);
session.save(user1); session.save(user2); tx.commit(); } catch (Exception ex) { ex.printStackTrace(); tx.rollback(); } finally { HibernateUtils.closeSession(session); }
} public void testSave3() { Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); Group group = new Group(); group.setName("重案组");
User user1 = new User(); user1.setName("马大哈"); user1.setGroup(group);
User user2 = new User(); user2.setName("神枪手"); user2.setGroup(group);
//不会抛出TransientObjectException异常 //因为配置了cascade属性,采用cascade是解决TransientObjectException异常的一种手段 //cascade 属性为:all、none、save-update、delete session.save(user1); session.save(user2); tx.commit(); } catch (Exception ex) { ex.printStackTrace(); tx.rollback(); } finally { HibernateUtils.closeSession(session); } public void testLoad1() { Session session = null; Transaction tx = null; try { session = HibernateUtils.getSession(); tx = session.beginTransaction(); User user=(User)session.load(User.class, 5); System.out.println("user.name="+user.getName()); System.out.println("user.group.name="+user.getGroup().getName()); tx.commit(); } catch (Exception ex) { ex.printStackTrace(); tx.rollback(); } finally { HibernateUtils.closeSession(session); }
} }   本文转自网上,如有侵犯你的权利请来信通知
顶一下
(0)
踩一下
(0)