hibernate框架使用

1.主目录结构


具体实现:

  

Hibernate开发过程:

1.      概念:

对JDBC API进行封装,负责Java对象持久层

2.      开发步骤:

导入需要的hiberate包

新建外部jar库,统一管理jar包

1.窗口->首选项->java->构建路径->用户库->新建->添加外部jar

构建路径,添加用户库

2.属性->java构建路径->添加库->用户库->选择需要的包

设置发布项目的时间将jar文件添加在web-INF下的lib文件

3.属性->developmentAssembly->选择

.在com.cfg包下新建hiberate.cfg.xml  hibernate基本配置,数据库基本信息

  <?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-configuration PUBLIC

"-//Hibernate/HibernateConfiguration DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>

  <session-factory>

      //数据库驱动包

      <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>

        <property name="hibernate.connection.password">123456</property>

//数据库路径       

<property name="hibernate.connection.url">jdbc:mysql://127.0.0.1:3306/hiberdb?useUnicode=true&amp;characterEncoding=UTF-8</property>

        <property name="hibernate.connection.username">root</property>

        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>

//如果表不存在,可以新建表

<property name="hbm2ddl.auto">create</property>

//配置文件的在项目中路径

        <mapping resource="com/cfg/tbl/Person.hbm.xml"/>

   </session-factory>

 

</hibernate-configuration>

根据数据库的表新建pojo类

package com.model;

public classPerson {

   private int id;

   private String name;

   private int age;

   private String address;

   public Person() {

      super();

      // TODO自动生成的构造函数存根

   }

   public Person(int id, String name, int age, String address) {

      super();

      this.id = id;

      this.name = name;

      this.age = age;

      this.address = address;

   }

   public int getId() {

      return id;

   }

   public void setId(int 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 String getAddress() {

      return address;

   }

   public void setAddress(String address) {

      this.address = address;

   }

}

Pojo映射配置(在com.cfg.tbl 包下的Person.hbm.xml

<?xml version="1.0"encoding="UTF-8"?>

<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/HibernateMapping DTD 3.0//EN"

"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">

<hibernate-mapping>

   //table属性对应数据库的table

  <class name="com.model.Person" table="Person">

    //id是数据库中的表的唯一标识   name是自己定义的pojo的类的属性名,//column是数据库中的属性名

     <id name="id" column="ID"type="java.lang.Integer">

           <generator class="increment"></generator>

     </id>

     <property name="name" column="NAME"type="java.lang.String"></property>

     <property name="age" column="AGE"type="java.lang.Integer"></property>

     <property name="address" column="ADDRESS"type="java.lang.String"></property>

   </class>

</hibernate-mapping>

编写数据库帮助类(在com.db.util包下的HiberDBUtil

package com.db.util;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.cfg.Configuration;

public class HiberDBUtil {

         privatestatic String CONFIG_FILE_LOCATION="/com/cfg/hiberate.cfg.xml";

         privatestatic Configuration config=new Configuration();

         privatestatic SessionFactory sessionFac;

         privatestatic ThreadLocal<Session> tdlocal=new ThreadLocal<Session>();

         privatestatic String confile=CONFIG_FILE_LOCATION;

        

        

         //静态数据块 加载配置文件,生成SessionFactory对象

         static{

                   try{

                            //加载配置文件

                            config.configure(confile);

                            //生成SessionFactory对象

                            sessionFac=config.buildSessionFactory();       

                   }catch(Exceptione){

                            e.printStackTrace();

                   }

         }

        

        

         privateHiberDBUtil(){

                  

         }

        

         publicstatic SessionFactory getSessionFactory(){

                   returnsessionFac;

         }

        

         publicstatic Session getSession(){

                  

             Session session=tdlocal.get();

             if(session==null||!session.isOpen()){

                      if(sessionFac==null){

                                reBuildSessionFactory();

                      }

                      session=(session!=null)?sessionFac.openSession():null;

                      tdlocal.set(session);

             }

                

             return session;

         }

        

         publicstatic void reBuildSessionFactory(){

                   try{

                            //加载配置文件

                            config.configure(confile);

                            //生成SessionFactory对象

                            sessionFac=config.buildSessionFactory();       

                   }catch(Exceptione){

                            e.printStackTrace();

                   }

         }

        

         publicstatic void closeSession(){

                  

                   Sessionsession=tdlocal.get();

                   tdlocal.set(null);

                  

                   if(session!=null){

                            session.close();

                   }

         }

}

编写测试类(hiberate使用事务操作数据库)

package com.Test;

import org.hibernate.Session;

import org.hibernate.SessionFactory;

import org.hibernate.Transaction;

import com.db.util.HiberDBUtil;

import com.model.Person;

public class Test {

         publicstatic void main(String[] args) throws Exception {

                   SessionFactory  sessionFac=HiberDBUtil.getSessionFactory();

                   Sessionsession=sessionFac.openSession();

                   //事物处理

                   Transactiontransa=(Transaction)session.beginTransaction();

                  

                   Personp1=new Person();

                   p1.setId(1);

                   p1.setName("hzs");

                   p1.setAge(21);

                   p1.setAddress("广州");

                  

                   session.save(p1);

                   //提交事物

                   transa.commit();

                  

                   session.close();

                  

                  

                  

                  

         }

        

        

}


//删除对象

public static void delete(int pid){

                   SessionFactory  sessionFac=HiberDBUtil.getSessionFactory();

                   Sessionsession=sessionFac.openSession();

                   Transactiontransa=(Transaction)session.beginTransaction();

                   //删除对象

             Pinfo pdelete=(Pinfo)session.get(Pinfo.class, pid);

                   session.delete(pdelete);

                   transa.commit();

                   session.close();

         }

//查询数据

public static void select(){

                   SessionFactory  sessionFac=HiberDBUtil.getSessionFactory();

                   Sessionsession=sessionFac.openSession();

                   Queryquery=session.createQuery("from Pinfo where pname like '%小%'");

                   List<Pinfo>list=query.list();

                   for(Pinfop: list){

                            System.out.println("姓名:"+p.getPname()+"\t性别:"+p.getpSex()+"\t地址:"+p.getpAddress()+"\t爱好:"+p.getPhob());

                   }

                   session.close();

         }

        

//更新数据

         publicstatic void update(Pinfo p){

                   SessionFactory  sessionFac=HiberDBUtil.getSessionFactory();

                   Sessionsession=sessionFac.openSession();

                   Transactiontransa=(Transaction)session.beginTransaction();

                   session.update(p);

                   transa.commit();

                   session.close();

         }




猜你喜欢

转载自blog.csdn.net/hzs33/article/details/51591768
今日推荐