栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Hibernate学习笔记

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Hibernate学习笔记

目录

一、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();
                }
    }

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/937652.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号