hibernate简单配置

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
}




 








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值