hibernate-configuration

1
2
3
4
5
6
7
8
9
10
11
12
13
<hibernate-configuration>
<session-factory>
<propertyname="connection.driver_class">com.mysql.jdbc.Driver</property>
<propertyname="connection.url">jdbc:mysql://localhost:3306/hibernate-1</property>
<propertyname="connection.username">root</property>
<propertyname="connection.password">root</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<propertyname="show_sql">true</property>
<propertyname="format_sql">true</property>
<propertyname="hbm2ddl.auto">create</property>
<mappingresource="com/yuan/model/Customer.hbm.xml"/>
</session-factory>
</hibernate-configuration>

hibernate级联操作

1
2
3
4
5
6
7
8
9
<many-to-one name="category" class="Category" cascade="save-update">
<!-- 映射的字段 -->
<column name="categoryId"/>
</many-to-one>
cascade
none;//默认
save-update;
delete;
all;

Hibernate关系映射

多对一单向映射 –> hibernate=-4

1
2
3
4
 <many-to-onename="category"class="com.yuan.hibernate.Category"fetch="join">
<columnname="CATEGORYID"/>
</many-to-one>
privateCategorycategory;

多对一双向映射 –> hibernate-5

1
2
3
<many-to-onename="category"class="com.yuan.hibernate.Category"fetch="join">
<columnname="CATEGORY"/>
</many-to-one>

1
2
3
4
5
6
7
  <setname="book"table="BOOK"inverse="false"lazy="true">
<key>
<columnname="ID"/>
</key>
<one-to-manyclass="com.yuan.hibernate.Book"/>
</set>
privateSet<Book>book;

一对一主键关系映射 –> hibernate-6

1
2
3
4
<one-to-onename="user"class="com.yuan.model.User"></one-to-one>
<one-to-onename="idCard"class="com.yuan.model.IdCard"></one-to-one>
privateUseruser;
privateIdCardidCard;

一对一主键外键关系映射 – > hibernate-7

1
2
<many-to-onename="idCard"update="true"/>
privateIdCardidCard;

多对多关系映射 – > hibernate-8

1
2
3
4
5
6
7
<setname="students"table="STUDENT_COURSE"inverse="false"lazy="true">
<key>
<columnname="COURSEID"/>
</key>
<many-to-manyclass="com.yuan.model.Student"column="STUDENTID"/>
</set>
```







privateSetstudents;
privateSetcourses;
```

HibernateUtil.save

1
2
3
4
5
6
7
8
9
10
11
12
Sessionsession=null;
try{
session=HibernateUtil.getSession();
session.beginTransaction();
session.save(customer);
session.getTransaction().commit();
}catch(Exceptione){
e.printStackTrace();
session.getTransaction().rollback();
}finally{
HibernateUtil.closeSession();
}

HibernateUtil

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.yuan.hibernate;

import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistryBuilder;

public class HibernateUtil {
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
private static SessionFactory sessionFactory = null; // SessionFactory对象
// 静态块
static {
try {
Configuration cfg = new Configuration().configure(); // 加载Hibernate配置文件
sessionFactory = cfg
.buildSessionFactory(new ServiceRegistryBuilder().applySettings(cfg.getProperties())
.buildServiceRegistry());
} catch (Exception e) {
System.err.println("创建会话工厂失败");
e.printStackTrace();
}
}

/**
* 获取Session
*
* @return Session
* @throws HibernateException
*/
public static Session getSession() throws HibernateException {
Session session = (Session) threadLocal.get();
if (session == null || !session.isOpen()) {
if (sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession()
: null;
threadLocal.set(session);
}
return session;
}

/**
* 重建会话工厂
*/
public static void rebuildSessionFactory() {
try {
Configuration cfg = new Configuration().configure(); // 加载Hibernate配置文件
sessionFactory = cfg
.buildSessionFactory(new ServiceRegistryBuilder().applySettings(cfg.getProperties())
.buildServiceRegistry());
} catch (Exception e) {
System.err.println("创建会话工厂失败");
e.printStackTrace();
}
}

/**
* 获取SessionFactory对象
*
* @return SessionFactory对象
*/
public static SessionFactory getSessionFactory() {
return sessionFactory;
}

/**
* 关闭Session
*
* @throws HibernateException
*/
public static void closeSession() throws HibernateException {
Session session = (Session) threadLocal.get();
threadLocal.set(null);
if (session != null) {
session.close(); // 关闭Session
}
}
}