>  기사  >  Java  >  CRUD 작업을 완료하기 위한 Hibernate 코드에 대한 자세한 설명

CRUD 작업을 완료하기 위한 Hibernate 코드에 대한 자세한 설명

Y2J
Y2J원래의
2017-05-13 11:06:411176검색

이 글은 주로 Hibernate의 데이터베이스 삭제, 검색, 업데이트 작업에 대한 예제 코드를 소개합니다. 관심 있는 친구들은 이를 참고할 수 있습니다.

이 섹션에서는 데이터베이스에 대한 Hibernate의 다른 작업을 계속합니다. 삭제, 쿼리, 수정.

Hibernate의 데이터 삭제 작업

User 테이블의 데이터를 삭제하려면 User 테이블의 기본 키 ID 값이 필요합니다. 먼저 해당 객체 를 id 값을 기준으로 데이터베이스에서 쿼리합니다. 사용할 수 있는 메소드는 두 가지가 있습니다. 하나는 session의 get 메소드이고, 다른 하나는 세션의 로드 메소드입니다.

Session의 Get 메서드: 이 메서드를 호출하면 객체 개체가 반환됩니다. 그런 다음 캐스트합니다. Useruser = (User)session.get(User.class,” 402881e5441c035e01441c0360510003”); 데이터에서 해당 결과를 찾기 위해 id 값을 전달하면 get 메소드는 null 값을 반환합니다.

차이점: get 메소드는 로드 시 바로 쿼리할 sql문을 발행하고, 로드 메소드는 실행 시 바로 쿼리할 sql문을 발행하지 않으며, Proxy User가 생성됩니다. 이지만 실제 사용자는 생성되지 않습니다. 실제 사용자는 이 사용자를 실제로 사용할 때 로드됩니다. Load()는 지연 로딩을 지원하지만 Get()은 지원하지 않습니다. Get은 로드된 개체가 없으면 null 개체를 반환하고, Load()는 로드된 개체가 없으면 ObjectNotFoundException을 발생시킵니다.

Session의 Load 메소드: Object 객체를 반환하기 위해 이 메소드도 호출한 후 강제 변환을 수행합니다.

그런 다음 get 또는 load를 통해 사용자 테이블 ID에 해당하는 개체를 로드한 다음 세션의 삭제 메서드를 호출하여 개체를 삭제하고 테이블의 레코드를 삭제합니다. 코드는 다음과 같습니다.

첫 번째 삭제 방법


 publicvoid testDel1()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         //采用load查询不存在的数据,hibernate会抛出object not found exception
         Useruser = (User)session.load(User.class,"402881e5441c035e01441c0360510003");
         
         //删除表中的记录.
         //删除,建议用此种方式删除,先加载再删除.
         session.delete(user);
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }

두 번째 삭제 방법은 분리된 개체를 수동으로 구성하고 그런 다음 삭제하십시오. 코드는 아래와 같습니다.


 //测试方法以test开头.测试del方法.返回存在的加载的.
      publicvoid testDel2()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         
         //手动构造的Detached对象.
         Useruser =new User();
         user.setId("402881e4441b3d1c01441b3f5dfe0001");
         session.delete(user);
         
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }

Hibernate는 데이터 쿼리 작업을 수행합니다.

일반 쿼리 코드는 다음과 같습니다.


//查询方法.
 publicvoid testQuery1()
 {
   Sessionsession =null;
   try
   {
    session= HibernateUtils.getSession();
    
    session.beginTransaction();
    //参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
    Queryquery = session.createQuery("from User");
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }

페이지 쿼리시 코드는 다음과 같습니다.


//分页查询,从什么地方查,查几个;
 publicvoid testQuery2()
 {
   Sessionsession =null;
   try
   {
    session=HibernateUtils.getSession();
    
    session.beginTransaction();
    //参数是一个字符串,是HQL的查询语句.注意此时的的UserU为大写,为对象的,而不是表的.
    Queryquery = session.createQuery("from User");
    //从第一个开始查起.可以设置从第几个查起.
    query.setFirstResult(0);
    //最大条数为两个
    query.setMaxResults(2);
    
    //使用List方法.
    ListuserList = query.list();
    //迭代器去迭代.
    for(Iteratoriter=userList.iterator();iter.hasNext();)
    {
      Useruser =(User)iter.next();
      System.out.println("id="+user.getId() + "name="+user.getName());
    }
    
    session.getTransaction().commit();
   }catch(Exception e){
    e.printStackTrace();
    session.getTransaction().rollback();
   }finally{
    HibernateUtils.closeSession(session);
   }
   
 }

Hibernate의 데이터 업데이트 작업

분리된 객체를 수동으로 구성하고 세션의 update()를 호출합니다. 방법, 코드는 다음과 같습니다.


      //测试方法以test开头.测试update方法.返回存在的加载的.
      publicvoid testUpdate1()
      {
        Sessionsession =null;
        
        try
        {
         session= HibernateUtils.getSession();
         //开启事务.
         session.beginTransaction();
         //采用load查询不存在的数据,hibernate会抛出object not found exception
         
         //手动构造的Detached对象.
         Useruser =newUser();
         user.setId("402881e5441bfb0601441bfb075b0002");
         user.setName("周六");
         
         session.update(user);
         
         
         //提交事务.把内存的改变提交到数据库上.
         session.getTransaction().commit();
         
        }catch(Exception e){
         e.printStackTrace();
         session.getTransaction().rollback();
        }finally{
         HibernateUtils.closeSession(session);
        }
        
      }

는 객체를 로드하고, 세션의 update() 메서드를 호출하고, 지속 상태일 때 객체를 업데이트합니다. 코드는 다음과 같습니다.


rree

【관련 추천】

1. 특별 추천: "php Programmer Toolbox" 버전 V0.1 다운로드

2. Java 무료 동영상 튜토리얼

3. YMP 온라인 매뉴얼

위 내용은 CRUD 작업을 완료하기 위한 Hibernate 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.