이 글은 주로 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() 메서드를 호출하고, 지속 상태일 때 객체를 업데이트합니다. 코드는 다음과 같습니다.
【관련 추천】
1. 특별 추천: "php Programmer Toolbox" 버전 V0.1 다운로드
3. YMP 온라인 매뉴얼
위 내용은 CRUD 작업을 완료하기 위한 Hibernate 코드에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!