Hibernate maven环境搭建
一)创建一个maven project,项目名称叫xm-hibernate-maven,项目结构图如下:
二)pom.xml配置内容如下:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.xm.hibernate</groupId>
<artifactId>xm-hibernate-maven</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<!-- junit测试jar引用 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- hibernate核心jar引用 -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.3.2.Final</version>
</dependency>
<!-- mysql jar引用 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.34</version>
</dependency>
</dependencies>
</project>
三)在src/main/java创建一个员工实体类,类名为EmployeeEntity,代码如下:
package com.xm.hibernate.entity;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
/**
* 员工表 entity
* @author ouyangjun
*
*/
@Entity
@Table(name = "employee")
public class EmployeeEntity {
@Id
@Column(name = "emp_id")
private Integer empId;
@Column(name = "emp_name")
private String empName;
@Column(name = "emp_no")
private String empNO;
@Column(name = "create_date")
private Long createDate;
public Integer getEmpId() {
return empId;
}
public void setEmpId(Integer empId) {
this.empId = empId;
}
public String getEmpName() {
return empName;
}
public void setEmpName(String empName) {
this.empName = empName;
}
public String getEmpNO() {
return empNO;
}
public void setEmpNO(String empNO) {
this.empNO = empNO;
}
public Long getCreateDate() {
return createDate;
}
public void setCreateDate(Long createDate) {
this.createDate = createDate;
}
}
四)在src/main/resources下创建hibernate的配置文件,文件名hibernate.cfg.xml,配置如下:
<?xml version="1.0" encoding="UTF-8"?>
<!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="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql://localhost:3306/xm</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- 使用的是本地事务(jdbc事务 本地事务:数据库只有一个) -->
<property name="current_session_context_class">thread</property>
<!-- 实体类注册 -->
<mapping class="com.xm.hibernate.entity.EmployeeEntity" />
</session-factory>
</hibernate-configuration>
五)在src/main/test文件夹下创建一个员工数据添加的测试类AddEmployee,代码如下:
package com.xm.hibernate.test;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import com.xm.hibernate.entity.EmployeeEntity;
public class AddEmployee {
public static void main(String[] args) {
// 创建sessionFactory
SessionFactory factory = new Configuration().configure().buildSessionFactory();
// 获取session
Session session = factory.getCurrentSession();
try{
// 开启事务
session.getTransaction().begin();
EmployeeEntity emp = new EmployeeEntity();
emp.setEmpId(100000);
emp.setEmpName("ouyangjun");
emp.setEmpNO("333333");
emp.setCreateDate(new Date().getTime());
// 持久化
session.persist(emp);
emp = new EmployeeEntity();
emp.setEmpId(200000);
emp.setEmpName("xm");
emp.setEmpNO("888888");
emp.setCreateDate(new Date().getTime());
// 持久化
session.persist(emp);
// 提交事务
session.getTransaction().commit();
System.out.println("==>员工数据持久化成功!");
} catch (Exception e){
e.printStackTrace();
session.getTransaction().rollback();
System.out.println("==>员工数据持久化失败!");
} finally {
session.close();
factory.close();
System.out.println("==>事务关闭!");
}
}
}
执行main方法,效果截图如下:
六)在src/main/test文件夹下创建一个员工数据查询测试类QueryEmployee,代码如下:
package com.xm.hibernate.test;
import java.util.List;
import java.util.Map;
import org.hibernate.SQLQuery;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;
import org.hibernate.transform.Transformers;
import com.xm.hibernate.entity.EmployeeEntity;
public class QueryEmployee {
public static void main(String[] args) {
// 创建sessionFactory
SessionFactory factory = new Configuration().configure().buildSessionFactory();
// 获取session
Session session = factory.getCurrentSession();
try{
// 开启事务
session.getTransaction().begin();
System.out.println("第一种查询方式----------begin----------");
// 第一种方式查询, hibernate HQL查询, 以实体类信息代替数据库表中的信息
String hql = "select e from EmployeeEntity e";
// 执行查询
Query<EmployeeEntity> query = session.createQuery(hql);
// 默认返回的数据是List<Object[]>
List<EmployeeEntity> list = query.getResultList();
for(EmployeeEntity entity : list){
System.out.println(entity.getEmpId() + "----" + entity.getEmpName()
+ "----" + entity.getEmpNO() + "----" + entity.getCreateDate());
}
System.out.println("第一种查询方式----------end----------");
System.out.println("第二种查询方式----------begin----------");
// 第二种方式查询, 原生sql查询
String sql = "select e.* from employee e";
Query queryTwo = session.createSQLQuery(sql);
// 默认返回的数据是List<Object[]>
List listTwo = queryTwo.getResultList();
Object[] objs;
for(int i=0; i<listTwo.size(); i++){
objs = (Object[])listTwo.get(i);
// 根据sql字段查询的顺序打印
System.out.println(objs[0] + "----" + objs[1] + "----" + objs[2] + "----" + objs[3]);
}
System.out.println("第二种查询方式----------end----------");
System.out.println("第三种查询方式----------begin----------");
// 第三种方式查询, 原生sql查询, 返回值不一样
String sqlThree = "select e.* from employee e";
Query queryThree = session.createSQLQuery(sqlThree);
// 设置返回的参数格式为List<Map<Object, Object>>
queryThree.unwrap(SQLQuery.class).setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP);
// 默认返回的数据是List<Object[]>
List<Map<Object, Object>> listThree = queryThree.getResultList();
// map返回方式性能比object低, 不推荐使用了
for(Map<Object, Object> map : listThree){
// map key
System.out.println(map.get("emp_id") + "----" + map.get("emp_name")
+ "----" + map.get("emp_no") + "----" + map.get("create_date"));
}
System.out.println("第三种查询方式----------end----------");
} catch (Exception e){
e.printStackTrace();
session.getTransaction().rollback();
System.out.println("==>数据查询失败!");
} finally {
session.close();
factory.close();
}
}
}
执行main,效果截图如下:
本章完结,待续!
源码下载地址: https://gitee.com/ouyangjun_xm/hibernate/attach_files下chapter-three.rar压缩包
码云账户: [email protected] 密码: [email protected]
请勿恶意操作,谢谢!
本文说明:该文章属于原创,如需转载,请标明文章转载来源