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);
}
}
}
本文转自网上,如有侵犯你的权利请来信通知