如何使用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