<?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="pojo.Classes" table="t1_Classes">
<id name="cid" column="cid">
<generator class="increment"></generator>
</id>
<property name="cname" column="cname" length="20"/>
<!-- table属性石第三方关联表的名字 -->
<set name="students" table="t_classes_student" cascade="update-save">
<!-- 在关联表中user的外键字段的名字 -->
<key column="classesid"></key>
<!-- 属性roles对应的第三方关联表中 对应的外键列的名字叫roleid -->
<many-to-many class="pojo.Student" column="studentsid"></many-to-many>
</set>
</class>
</hibernate-mapping>
------------------------
<?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 package="pojo">
<class name="Student" table="t1_student">
<id name="sid" column="sid">
<generator class="increment"></generator>
</id>
<property name="sname" column="sname" length="20"></property>
<set name="Classes" table="t_classes_student" cascade="update-save" inverse="true">
<key column="studentsid"></key>
<many-to-many class="pojo.Classes" column="classesid" >
</many-to-many>
</set>
</class>
</hibernate-mapping>
----------------------
【CreateTableUtil】
public class CreateTableUtil {
public static void main(String[] args) {
Configuration cfg = new Configuration();
cfg.configure();
//工具利用持久化类和映射文件生成数据库架构
SchemaExport export = new SchemaExport(cfg);
//第一个true是将sql语句输出在控制台,第二个true,根据持久类和配置文件,先删除表,再创建表
export.create(true,true);
}
}
---------------------
【HibernateUtils】
public class HibernateUtils {
private static SessionFactory sessionFactory;
static{
//创建读取配置文件的对象
Configuration configuration =new Configuration();
//加载hibernate配置文件
configuration.configure();
//加载配置文件以后,到ServiceRegistry 类中进行注册,表示我需要使用sessionFactory ,需要获取使用证明
ServiceRegistry serviceRegistry =new StandardServiceRegistryBuilder()
.applySettings(configuration.getProperties())
.build();//换了
//.getBootstrapServiceRegistry();
//通过使用证明,获取sessionfory对象
sessionFactory =configuration.buildSessionFactory(serviceRegistry);
}
//获取sessionFactory
public static SessionFactory getSessionFactory(){
return sessionFactory;
//创建session
}
public static Session getSession(){
return sessionFactory.openSession();
}
}
-------------
【StudentTest】
public class StudentTest {
private Session session;
@Test
public void test_select(){
session.beginTransaction();
Classes c= (Classes)session.load(Classes.class, 1);
System.out.println(c.getCname());
Set<Student> ss= c.getStudents();
for(Student s: ss){
System.out.println(s.getSname());
}
}
@Test
public void test_select2(){
session.beginTransaction();
Student s= (Student)session.load(Student.class, 1);
System.out.println(s.getClass()+"==="+s.getSname());
}
@Test
public void test_delete(){//删除表关系
session.beginTransaction();
try {
Student s= (Student)session.get(Student.class,2);
// System.out.println(s.getSname());
Classes c= (Classes)session.get(Classes.class,1);
s.setClasses(null);
c.getStudents().remove(s);
session.getTransaction().commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
session.beginTransaction().rollback();
}
}
@Test
public void test_init(){
session.beginTransaction();
try {
Classes c= new Classes();
c.setCname("班级614");
Set<Student> ss= new HashSet<Student>();
for (int i = 0; i <=10; i++) {
Student s= new Student();
s.setSname("张三"+i);
s.setClasses(c);
session.save(s);
ss.add(s);
}
c.setStudents(ss);
session.getTransaction().commit();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
session.getTransaction().rollback();
}
}
@Before
public void beforeGetSession(){
session =HibernateUtils.getSession();
}
@After
public void closeSession(){
session.clear();
session.close();
}
}