• 如何使用IDEA建立一个hibernate项目


    hibernate操作步骤:
    1、新建一个maven项目;

    2、导入相应的包,和修改资源文件
    <dependency>
    <groupId>com.oracle</groupId>
    <artifactId>ojdbc6</artifactId>
    <version>11.2.0.3.0</version>
    </dependency>
    <!--hibernate核心包 -->
    <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.4.1.Final</version>
    </dependency>
    <!--hibernate缓存-->
    <dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-ehcache</artifactId>
    <version>5.4.1.Final</version>
    </dependency>
    </dependencies>
    ---------
    <build>
    <resources>
    <resource>
    <!-- 配置打war时候的要打的文件路径 -->
    <directory>src/main/java</directory>
    <includes>
    <include>**/*.xml</include>
    </includes>
    <filtering>false</filtering>
    </resource>
    <resource>
    <directory>src/main/resources</directory>
    <includes>
    <include>*.properties</include>
    <include>*.xml</include>
    </includes>
    <filtering>false</filtering>
    </resource>
    </resources>
    </build>

    3、添加主配置文件hibernate.cfg.xml,-->Project Structure-->Modules-->+-->hibernate-->点击右边+-->OK;
    修改hibernate.cfg.xml,连接数据库,
    <session-factory>
    <property name="connection.url">jdbc:oracle:thin:@localhost:1521:XE</property>
    <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
    <property name="connection.username">system</property>
    <property name="connection.password">sun</property>
    <!-- <property name="connection.username"/> -->
    <!-- <property name="connection.password"/> -->
    <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
    <property name="show_sql">true</property>
    <property name="format_sql">true</property>
    <!-- DB schema will be updated if needed -->
    <!-- <property name="hibernate.hbm2ddl.auto">update</property> -->
    <mapping resource="User.hbm.xml"></mapping>
    </session-factory>

    4、连接数据库,在项目的右边第二个,Database,选择+ -->DataSource-->Oracle-->连接数据库-->输入你的数据库的用户名和密码-->点击Test Connection测试数据库是否连接成功;

    5、
    点击项目左下角Persistence-->hibernate0507-->右键(最下面一个)-->Generate Persistence Mapping-->By Database Schema-->连接数据库@localhost-->添加包名-->选择你要的表-->勾右边两个-->点击ok;
    会自动生成java目录下的java文件和resources的***.hbm.xml映射文件;

    6、先配置好resources的映射文件-->***.hbm.xml文件;
    在id里面添加指定序列名称:
    <id name="id">
    <column name="ID" sql-type="number(2)" precision="2"/>
    <generator class="native">
    <param name="sequence_name">seq_city</param>
    </generator>
    </id>
    此时映射文件会报红,把鼠标放到报红出,点击第一个,再把鼠标放到hibernate.cfg.xml处,点击Data Source下面的@localhost即可;

    7、在src目录下添加一个test-java文件;写一个CityTest.java文件来测试;
    //这是添加数据
    @Test
    public void test(){
    Configuration configure=new Configuration().configure("/hibernate.cfg.xml");
    SessionFactory sessionFactory=configure.buildSessionFactory();
    Session session=sessionFactory.openSession();
    Transaction transaction=session.beginTransaction();
    CityEntity city=new CityEntity(30, "陕西省", "西安市");
    session.save(city);
    transaction.commit();
    session.close();
    sessionFactory.close();
    }

    此时,为了能够与test文件相对,应该在CityEntity.java中写上构造方法
    public CityEntity(){

    }
    public CityEntity(long id,String province,String city){
    this.id=id;
    this.province=province;
    this.city=city;
    }
    又为了能够输入正常的字符串而不是哈希值,所以还需要定义一个toString()方法;(直接打就会有提示的,不用自己敲)

    8、为了简便,可以先先写好一个专门连接数据库的java文件,参考struts2;
    在com.seecen.hibernate.entity下面建一个目录,与CityEntity同级目录,先建一个util包,在写一个DBUtil的java文件,这个文件的作用相当于通配符把,反正就是这个意思;到后面写增删改查的时候就可以省略那些连接的语句了;
    package com.seecen.hibernate.util;

    import org.hibernate.Session;
    import org.hibernate.SessionFactory;
    import org.hibernate.cfg.Configuration;

    import java.io.Closeable;
    public class DBUtil {
    public static SessionFactory sessionFactory;
    static {
    //1. 加载配置文件
    Configuration configure = new Configuration().configure("/hibernate.cfg.xml");
    //2.创建SessionFactory
    sessionFactory = configure.buildSessionFactory();
    }

    public static Session getSession(){
    return sessionFactory.openSession();
    }
    /**
    * 关闭资源
    * @param closeables
    */
    public static void close(Closeable... closeables){
    if(closeables!=null){
    for (Closeable closeable : closeables) {
    try {
    closeable.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    }
    }


    9、//查询
    @Test
    public void selectTest(){
    Session session= DBUtil.getSession();
    CityEntity city=session.get(CityEntity.class,1L);
    //System.out.println(city);
    CityEntity city2=session.load(CityEntity.class,1L);
    System.out.println(city2);
    DBUtil.close(session,DBUtil.sessionFactory);
    }
    //修改
    @Test
    public void update(){
    Session session=DBUtil.getSession();
    Transaction transaction=session.beginTransaction();
    CityEntity city=new CityEntity(1,"山西省","太原市");
    session.update(city);
    transaction.commit();
    DBUtil.close(session,DBUtil.sessionFactory);
    }
    //删除
    @Test
    public void delete(){
    Session session=DBUtil.getSession();
    Transaction transaction=session.beginTransaction();
    CityEntity city=new CityEntity(1,"山西省","太原市");
    session.delete(city);
    transaction.commit();
    DBUtil.close(session,DBUtil.sessionFactory);
    }

    10、Hibernate 执行步骤
    1)加载配置文件
    2)根据配置文件生成SessionFactory(负责创建Session的核心接口)。SessionFactory通常只有一个。
    3)根据SessionFactory创建Session。通常Session为请求级别。一个线程一个Session。
    4)如果是DML(DML(data manipulation language):它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字度一样,这4条命令是用来对数据库里的数据进知行操作的语言)操作需要开启事务
    5)通过session执行数据库操作
    6)提交事务
    7)关闭资源(session sessionFactory

  • 相关阅读:
    帆软查看注册用户的数据库信息
    [已解决]报错:sql server 返回结果出现中文乱码
    消除点击单元格时出现的黑框
    python tcp udp函数装饰器,无需亲自手写socket连接代码。
    介绍一个python代码自动运行在远程机器的三方包。
    python paramiko上传文件夹到linux
    filebeat自定义索引名,filebeat索引模板
    mydumper
    mysql误删ibd文件
    mysql update多字段时引发的一个问题
  • 原文地址:https://www.cnblogs.com/xie-qi/p/12866016.html
Copyright © 2020-2023  润新知