首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

hibernate的思忖及一对多关系实现的代码

2012-08-31 
hibernate的思考及一对多关系实现的代码package com.dong.modelimport java.util.Listimport java.util.

hibernate的思考及一对多关系实现的代码

package com.dong.model;import java.util.List;import java.util.Set;public class Student{private Long id;private String name;private int age;private Set<Course> courses;public Student(){}public Student(Long id, String name, int age, Set<Course> courses){this.id = id;this.name = name;this.age = age;this.courses = courses;}public Long getId(){return id;}public void setId(Long id){this.id = id;}public String getName(){return name;}public void setName(String name){this.name = name;}public int getAge(){return age;}public void setAge(int age){this.age = age;}public Set<Course> getCourses(){return courses;}public void setCourses(Set<Course> courses){this.courses = courses;}}

package com.dong.model;public class Course{private Long id;private String name;private Student student;public Course(){}public Course(Long id, String name, Student student){this.id = id;this.name = name;this.student = student;}public Long getId(){return id;}public void setId(Long id){this.id = id;}public String getName(){return name;}public void setName(String name){this.name = name;}public Student getStudent(){return student;}public void setStudent(Student student){this.student = student;}}

<?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> <!-- 连接的URL --><property name="connection.url">jdbc:mysql://localhost:3306/hibernate</property><!-- 登录数据库的用户名 --><property name="connection.username">root</property><!-- 登录数据库的密码 --><property name="connection.password">wlzjdm</property><!-- 连接数据库的驱动 --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><!-- 采用的会话方言,也就是告诉hibernate此次连接的是什么数据库,采用哪种数据库语言 --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><!-- 是否打印hibernate自动生成的SQL语句,为了方便测试,此处设置为true,当我们部署的时候应该设置为false --><property name="show_sql">true</property><!-- 模型与数据库表的关联配置 --><mapping resource="Student.hbm.xml"/><mapping resource="Course.hbm.xml"/> </session-factory></hibernate-configuration>

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.dong.model.Student" table="student"><id name="id" type="long"><generator type="string"/><property name="age" type="integer"/><set name="courses" cascade="all" inverse="true"><key column="stu_id"/><one-to-many name="code"><?xml version="1.0" encoding="UTF-8"?><!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd"><hibernate-mapping><class name="com.dong.model.Course" table="course"><id name="id" type="long"><generator /></id><property name="name" type="string"/><many-to-one name="student" column="stu_id"/></class></hibernate-mapping>

package com.dong.test;import java.util.HashSet;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.hibernate.Transaction;import org.hibernate.cfg.Configuration;import com.dong.model.Course;import com.dong.model.Student;public class TestOneToMany{private static SessionFactory factory;static{try{factory = new Configuration().configure().buildSessionFactory();}catch (Exception e){e.printStackTrace();}}public static void main(String[] args){TestOneToMany t = new TestOneToMany();t.mulThreadTest(10000);t.mulThreadTest(0);t.mulThreadTest(0);}private void mulThreadTest(final long time){Thread t1 = new Thread(){@Overridepublic void run(){Session session = null;Transaction tx = null;try{session = factory.openSession();tx = session.beginTransaction();Student s1 = new Student();s1.setName("dong");s1.setAge(22);s1.setCourses(new HashSet<Course>());Course cs1 = new Course();cs1.setName("math");cs1.setStudent(s1);Course cs2 = new Course();cs2.setName("english");cs2.setStudent(s1);s1.getCourses().add(cs1);s1.getCourses().add(cs2);session.save(s1);System.out.println(this.getId() + ":" + s1.getId());Thread.sleep(time);System.out.println(this.getId() + ":" + s1.getId());tx.commit();System.out.println(this.getId() + ":" + s1.getId());}catch (Exception e){if (tx != null){tx.rollback();}}finally{if (session != null){session.close();}}}};t1.start();}}?

热点排行