目录
一、Hibernate概述
二、导入pom包
三、配置文件
四、实体类
五、测试类
六、管理类工具类的抽取
七、使用工具类对表进行增删改查
7.1增添操作
7.2修改操作
7.3删除操作
7.4查询操作
八、通过创建Query对象来进行查询操作
8.1查询所有
8.2分页查询
8.3条件查询
8.4排序查询
8.5统计(计数)查询
一、Hibernate概述
Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,使得Java程序员可以随心所欲的使用对象编程思维来操纵数据库。
二、导入pom包
junit
junit
4.12
test
org.hibernate
hibernate-entitymanager
${project.hibernate.version}
org.hibernate
hibernate-c3p0
${project.hibernate.version}
log4j
log4j
1.2.17
mysql
mysql-connector-java
5.1.6
org.apache.maven.plugins
maven-compiler-plugin
1.8
1.8
三、配置文件
org.hibernate.jpa.HibernatePersistenceProvider
四、实体类
@Entity //声明这是一个实体类
@Table(name="cst_customer") //和哪张表进行对应
public class Customer implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name="cust_id")
private Long custId;
@Override
public String toString() {
return "Customer{" +
"custId=" + custId +
", custName='" + custName + ''' +
", custSource='" + custSource + ''' +
", custIndustry='" + custIndustry + ''' +
", custLevel='" + custLevel + ''' +
", custAddress='" + custAddress + ''' +
", custPhone='" + custPhone + ''' +
'}';
}
@Column(name="cust_name")
private String custName;
@Column(name="cust_source")
private String custSource;
@Column(name="cust_industry")
private String custIndustry;
@Column(name="cust_level")
private String custLevel;
@Column(name="cust_address")
private String custAddress;
@Column(name="cust_phone")
private String custPhone;
public Long getCustId() {
return custId;
}
public void setCustId(Long custId) {
this.custId = custId;
}
public String getCustName() {
return custName;
}
public void setCustName(String custName) {
this.custName = custName;
}
public String getCustSource() {
return custSource;
}
public void setCustSource(String custSource) {
this.custSource = custSource;
}
public String getCustIndustry() {
return custIndustry;
}
public void setCustIndustry(String custIndustry) {
this.custIndustry = custIndustry;
}
public String getCustLevel() {
return custLevel;
}
public void setCustLevel(String custLevel) {
this.custLevel = custLevel;
}
public String getCustAddress() {
return custAddress;
}
public void setCustAddress(String custAddress) {
this.custAddress = custAddress;
}
public String getCustPhone() {
return custPhone;
}
public void setCustPhone(String custPhone) {
this.custPhone = custPhone;
}
}
五、测试类
往上边生成的表中增添一个名字:
@Test
public void test(){
//创建一个管理类的工厂
EntityManagerFactory factory= Persistence.createEntityManagerFactory("myJpa");
//创建实体管理类
EntityManager em=factory.createEntityManager();
//获取事务对象
EntityTransaction tx=em.getTransaction();
//开启事务
tx.begin();
Customer c=new Customer();
c.setCustName("多宝鱼666");
//保存
em.persist(c);
tx.commit();
//释放资源
em.close();
factory.close();;
}
运行结果:
六、管理类工具类的抽取
将工具类抽取出来:
public final class JPAUtil {
private static EntityManagerFactory em;
static{
//管理类的工厂
em= Persistence.createEntityManagerFactory("myJpa");
}
public static EntityManager getEntityManager(){
//获取实体管理类
return em.createEntityManager();
}
}
七、使用工具类对表进行增删改查
7.1增添操作
向表中增添一条数据:
public void testAdd(){
Customer c=new Customer();
c.setCustName("多宝鱼777");
c.setCustLevel("VIP");
c.setCustSource("网络");
c.setCustIndustry("it");
c.setCustAddress("哈尔滨");
c.setCustPhone("188");
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
em.persist(c);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
结果:
7.2修改操作
将id为1的数据名字修改成:多宝鱼:
@Test
public void testEdit(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
Customer c1=em.find(Customer.class,1L);
c1.setCustName("多宝鱼");
em.clear();
em.merge(c1);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
7.3删除操作
@Test
public void testdelete(){
EntityManager em=null;
EntityTransaction tx=null;
try{
//获取实体管理对象
em= JPAUtil.getEntityManager();
//获取事务对象
tx=em.getTransaction();
//开启事务
tx.begin();
//执行操作
Customer c1=em.find(Customer.class,1L);
em.remove(c1); //移除
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
7.4查询操作
@Test
public void testGetOne(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
Customer c1=em.find(Customer.class,2L);
Customer c2=em.find(Customer.class,2L);
tx.commit();
System.out.println(c1);
System.out.println(c1==c2);
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
八、通过创建Query对象来进行查询操作
8.1查询所有
@Test
public void testSelect(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer";
//创建一个query对象
Query query=em.createQuery(jpq1);
//查询并得到结果返回
List list=query.getResultList();
for(Object object:list){
System.out.println(list);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.2分页查询
@Test
public void testSelect2(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer";
Query query=em.createQuery(jpq1);
query.setFirstResult(0); //起始索引
query.setMaxResults(1); //每页显示的条数
List list=query.getResultList(); //得到集合返回类型
for(Object object:list){
System.out.println(object);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.3条件查询
@Test
public void testSelectByLikeName(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer where custName like ?1";
Query query=em.createQuery(jpq1);
query.setParameter(1,"%鱼");
Object object=query.getSingleResult(); //得到唯一的结果集
System.out.println(object);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.4排序查询
@Test
public void testSort(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer order by cust_id desc";
Query query=em.createQuery(jpq1);
List list=query.getResultList(); //得到集合返回类型
for(Object object:list){
System.out.println(object);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.5统计(计数)查询
@Test
public void testCount(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="select count(custId) from Customer";
Query query=em.createQuery(jpq1);
Object count=query.getResultList();
System.out.println(count);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
@Test
public void testGetOne(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
Customer c1=em.find(Customer.class,2L);
Customer c2=em.find(Customer.class,2L);
tx.commit();
System.out.println(c1);
System.out.println(c1==c2);
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
八、通过创建Query对象来进行查询操作
8.1查询所有
@Test
public void testSelect(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer";
//创建一个query对象
Query query=em.createQuery(jpq1);
//查询并得到结果返回
List list=query.getResultList();
for(Object object:list){
System.out.println(list);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.2分页查询
@Test
public void testSelect2(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer";
Query query=em.createQuery(jpq1);
query.setFirstResult(0); //起始索引
query.setMaxResults(1); //每页显示的条数
List list=query.getResultList(); //得到集合返回类型
for(Object object:list){
System.out.println(object);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.3条件查询
@Test
public void testSelectByLikeName(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer where custName like ?1";
Query query=em.createQuery(jpq1);
query.setParameter(1,"%鱼");
Object object=query.getSingleResult(); //得到唯一的结果集
System.out.println(object);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.4排序查询
@Test
public void testSort(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer order by cust_id desc";
Query query=em.createQuery(jpq1);
List list=query.getResultList(); //得到集合返回类型
for(Object object:list){
System.out.println(object);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.5统计(计数)查询
@Test
public void testCount(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="select count(custId) from Customer";
Query query=em.createQuery(jpq1);
Object count=query.getResultList();
System.out.println(count);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
@Test
public void testSelect(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer";
//创建一个query对象
Query query=em.createQuery(jpq1);
//查询并得到结果返回
List list=query.getResultList();
for(Object object:list){
System.out.println(list);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.2分页查询
@Test
public void testSelect2(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer";
Query query=em.createQuery(jpq1);
query.setFirstResult(0); //起始索引
query.setMaxResults(1); //每页显示的条数
List list=query.getResultList(); //得到集合返回类型
for(Object object:list){
System.out.println(object);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.3条件查询
@Test
public void testSelectByLikeName(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer where custName like ?1";
Query query=em.createQuery(jpq1);
query.setParameter(1,"%鱼");
Object object=query.getSingleResult(); //得到唯一的结果集
System.out.println(object);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.4排序查询
@Test
public void testSort(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer order by cust_id desc";
Query query=em.createQuery(jpq1);
List list=query.getResultList(); //得到集合返回类型
for(Object object:list){
System.out.println(object);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.5统计(计数)查询
@Test
public void testCount(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="select count(custId) from Customer";
Query query=em.createQuery(jpq1);
Object count=query.getResultList();
System.out.println(count);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
@Test
public void testSelectByLikeName(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer where custName like ?1";
Query query=em.createQuery(jpq1);
query.setParameter(1,"%鱼");
Object object=query.getSingleResult(); //得到唯一的结果集
System.out.println(object);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.4排序查询
@Test
public void testSort(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="from Customer order by cust_id desc";
Query query=em.createQuery(jpq1);
List list=query.getResultList(); //得到集合返回类型
for(Object object:list){
System.out.println(object);
}
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
8.5统计(计数)查询
@Test
public void testCount(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="select count(custId) from Customer";
Query query=em.createQuery(jpq1);
Object count=query.getResultList();
System.out.println(count);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}
@Test
public void testCount(){
EntityManager em=null;
EntityTransaction tx=null;
try{
em= JPAUtil.getEntityManager();
tx=em.getTransaction();
tx.begin();
String jpq1="select count(custId) from Customer";
Query query=em.createQuery(jpq1);
Object count=query.getResultList();
System.out.println(count);
tx.commit();
}catch (Exception e){
tx.rollback();
e.printStackTrace();
}finally {
em.close();
}
}



