hibernate使用步骤:
1、导包
2、在src根目录下创建核心配置文件hibernate.cfg.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!-- 引入约束,规范内容 .在hibernate核心jar包第一个包里最后找configuration.dtd文件复制头文件-->
3
<!DOCTYPE hibernate-configuration PUBLIC
4
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
5
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
6
<hibernate-configuration>
7
<!-- 一次连接多个会话:hibernate与数据库之间的会话 -->
8
<session-factory>
9
<!-- 和不同数据库进行会话 ,提高数据的可移植性-->
10
<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
11
<property name="hibernate.connection.username">root</property>
12
<property name="hibernate.connection.password">root</property>
13
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/news</property>
14
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
15
<!-- 显示sql语句 -->
16
<property name="show_sql">true</property>
17
<!-- 格式化sql -->
18
<property name="format_sql">true</property>
19
<!-- 引入映射文件 -->
20
<mapping resource="pojo/News.hbm.xml"/>
21
<mapping resource="pojo/Student.hbm.xml"/>
22
</session-factory>
23
</hibernate-configuration>
3、创建持久化类
1
package pojo;
2
3
import java.io.Serializable;
4
5
public class Student implements Serializable{
6
/**
7
*
8
*/
9
private static final long serialVersionUID = 1L;
10
private int id;
11
private String name;
12
private int age;
13
public int getId() {
14
return id;
15
}
16
public void setId(int id) {
17
this.id = id;
18
}
19
public String getName() {
20
return name;
21
}
22
public void setName(String name) {
23
this.name = name;
24
}
25
public int getAge() {
26
return age;
27
}
28
public void setAge(int age) {
29
this.age = age;
30
}
31
public Student() {
32
super();
33
}
34
public Student(int id, String name, int age) {
35
super();
36
this.id = id;
37
this.name = name;
38
this.age = age;
39
}
40
@Override
41
public String toString() {
42
return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
43
}
44
45
}
4、创建映射文件:类名.hbm.xml
1
<?xml version="1.0" encoding="UTF-8"?>
2
<!-- 引入约束,规范内容 .在hibernate核心jar包第一个包里最后找mapping.dtd文件复制头文件-->
3
<!DOCTYPE hibernate-mapping PUBLIC
4
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
5
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
6
<hibernate-mapping>
7
<class name="pojo.Student" table="student">
8
<!-- 必须要有ID标签 -->
9
<id name="id" column="stu_id">
10
<generator class="increment"></generator>
11
</id>
12
<property name="name" column="stu_name"></property>
13
<property name="age" column="stu_age"></property>
14
</class>
15
</hibernate-mapping>
5、DML操作,手动提交事务
先整合一个工具类在工具类里添加getsession()方法:
1、简单写法
1
public static Session getSession(){
2
Configuration config=new Configuration().configure("/hibernate.cfg.xml");
3
SessionFactory sessionFactory=config.buildSessionFactory();
4
//获取session
5
Session session=sessionFactory.openSession();
6
return session;
7
}
2、复杂写法:
1
public static SessionFactory sessionFactory=null;
2
static{
3
//读取核心文件
4
Configuration config=new Configuration().configure();
5
//service注册工厂
6
ServiceRegistryBuilder builder=new ServiceRegistryBuilder();
7
//获取里面的配置信息
8
Properties pro=config.getProperties();
9
//读取hibernate的配置信息
10
builder.applySettings(pro);
11
//创建serviceRegistry
12
ServiceRegistry serviceRegistry=builder.buildServiceRegistry();
13
//获取sessionFactory对象
14
sessionFactory=config.buildSessionFactory(serviceRegistry);
15
}
16
public static Session getSession(){
17
//获取session
18
Session session=sessionFactory.openSession();
19
return session;
20
}
21
22
6、使用工具:
1
public static void main(String[] args) {
2
Session session=HibernateUtil.getSession();
3
System.out.println("创建成功");
4
Transaction tx=session.beginTransaction();
5
try {
6
//添加
7
Student stu=new Student();
8
stu.setAge(12);
9
stu.setName("rose");
10
session.save(stu);
11
tx.commit();
12
13
//查询 Session.load/get方法均可以根据指定的实体类和id从数据库读取记录
14
Student selectStu=(Student)session.get(Student.class, 6);//第二个参数是ID
15
System.out.println(selectStu.getName()+selectStu.getAge());
16
//hql查询
17
Query query=session.createQuery("from Student where id=1");
18
List<Student> stuList=query.list();
19
for(Student student:stuList){
20
System.out.println("姓名:"+student.getName());
21
}
22
} catch (Exception e) {
23
e.printStackTrace();
24
tx.rollback();
25
}finally{
26
session.close();
27
}
28
}
hibernate 查询:
1
public static void main(String[] args) {
2
Session session=HibernateUtil.getSession();
3
Transaction tx=session.beginTransaction();
4
try {
5
/*Student stu=new Student("jack",23);
6
session.save(stu);
7
tx.commit();*/
8
System.out.println("********************iterate查询************************************");
9
//iterator方法查询会先查id ,然后挨个根据id查数据
10
Iterator<Student> stuList=session.createQuery("from Student").iterate();
11
while(stuList.hasNext()){
12
Student stud=stuList.next();
13
System.out.println(stud.getName());
14
}
15
16
System.out.println("*******************list查询*************************************");
17
//list方法会一下子全部查询出来
18
List<Student> list=session.createQuery("from Student").list();
19
for(Student st:list){
20
System.out.println(st.getName());
21
}
22
System.out.println("*********************带参查询***********************************");
23
//:参数名
24
List<Student> stulist=session.createQuery("from Student where age=:age and name=:name") //返回类型是Query
25
.setParameter("age", 23)
26
.setParameter("name", "jack")
27
.list();
28
for(Student s:stulist){
29
System.out.println(s.getName());
30
}
31
} catch (Exception e) {
32
e.printStackTrace();
33
tx.rollback();
34
}finally{
35
session.close();
36
}
37
}