初识hibernate,使用idea maven项目搭建

hibernate 简介:
hibernate是一个开源框架,它是对象关联关系映射的框架,它对JDBC做了轻量级的封装,而我们java程序员可以使用面向对象的思想来操纵数据库。
hibernate核心接口
session:负责被持久化对象CRUD操作
sessionFactory:负责初始化hibernate,创建session对象
configuration:负责配置并启动hibernate,创建SessionFactory
Transaction:负责事物相关的操作
Query和Criteria接口:负责执行各种数据库查询


hibernate工作原理:

1.通过Configuration config = new Configuration().configure();//读取并解析hibernate.cfg.xml配置文件
2.由hibernate.cfg.xml中的<mapping resource="xx/xx/User.hbm.xml"/>读取并解析映射信息
3.通过SessionFactory sf = config.buildSessionFactory();//创建SessionFactory
4.Session session = sf.openSession();//打开Sesssion
5.Transaction tx = session.beginTransaction();//创建并启动事务Transation
6.persistent operate操作数据,持久化操作
7.tx.commit();//提交事务
8.session.close()//关闭Session

9.sf.close()//关闭SesstionFactory

hibernate搭建:

1.具体搭建过程体系省略,下面是搭建好的结构图:


2.pom节点如下:

   <dependencies>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>javaee</groupId>
            <artifactId>javaee-api</artifactId>
            <version>5</version>
        </dependency>
    
        <!-- hibernate核心jar包 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>5.1.5.Final</version>
        </dependency>
        <!-- hibernate注解 -->
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-annotations</artifactId>
            <version>3.5.0-Final</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>RELEASE</version>
        </dependency>
    </dependencies>


3.大配置的编写:

  创建一个hibernate.cfg.xml文件,将之放入resource目录下,其内容如下:

    

<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">jjz</property>
        <property name="connection.password">jjz</property>
        <property name="show_sql">true</property>
        <property name="hbm2ddl.auto">update</property>
        <mapping resource="cn/jjz/pojo/Rs.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

4.持久层的搭建:

   将之放置在pojo下,以及相应的映射文件,如下所示:


 RS类中代码:

public class Rs {
    private int id;
    private String name;
    private int age;

    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;
    }
}

Rs.hbm.xml映射文件如下:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
        "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- package声明pojo类所在的包,如果不写 那么在class中需要指明pojo类所在的包
       schema指数据库模式 一个模式下可以有多张表
   -->
<hibernate-mapping package="cn.jjz.pojo">
    <!-- class指映射一个实体类entity
       提供了公共的无参构造方法-通过反射产生对象
       属性用private修饰,并且生成对应的get/set方法
       类不能用final来修饰-hibernate会产生代理类(cglib)
       类需要指明标识
       name表示pojo类名
       table表示pojo类对应数据库中的表名;如果不写默认是类名
    -->
    <class name="Rs" table="Rs">
        <!--
              id表示实体类的标识(OID)
              对应数据库表中的主键
              name指实体类的标识属性名
              column表示对应数据库表的列名:如果不写 则数据库表中列名和属性名一致
              length表示数据库表中 对应数据类型的长度 ,如果不写有默认长度
              type表示类型如果不写hibernate可以找到对应pojo类的属性的类型
           -->
        <id name="id" column="id">
            <generator class="sequence"></generator>
        </id>
        <property name="name" column="name"></property>
        <property name="age" column="age"></property>
    </class>
</hibernate-mapping>


5.测试一下,将对应的测试类建在test下:

  

public class RsTest {
    Configuration cfg = null;
    SessionFactory sf = null;
    Session session = null;
    Transaction tx = null;

    @Test
    public void c() {
        /*
        * 查询
        * */
       
        cfg = new Configuration().configure();
        sf = cfg.buildSessionFactory();
        session = sf.openSession();
        tx = session.beginTransaction();
        Rs r = new Rs();
        session.load(Rs.class, 2);
        System.out.println(r.getName());
        session.close();
        sf.close();
    }
    @Test
    public void b(){
     /*
     * 删除
     * */
        cfg=new Configuration().configure();
        sf= cfg.buildSessionFactory();
        session=sf.openSession();
        tx=session.beginTransaction();
        Rs r=new Rs();
        r.setId(1);
        session.delete(r);
        tx.commit();
        session.close();
        sf.close();
    }
    @Test
    public void a(){
          //*
         // ** 添加
          //*
        cfg=new Configuration().configure();
        ServiceRegistry registry=new StandardServiceRegistryBuilder().configure().build();
        sf=cfg.buildSessionFactory(registry);
        session=sf.openSession();
        tx=session.beginTransaction();
        Rs stu=new Rs();
        stu.setName("海四达");
        stu.setAge(23);
        session.save(stu);
        tx.commit();
        if (session!=null&&session.isOpen()){
            session.close();
            sf.close();
        }

}
}

  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值