心得2-hibernate入门(二)
t();*/
//方法二:直接new出bean类,然后指明要删除的id
Session session = HibernateUtil.getSession();
session.beginTransaction();
User user = new User();
user.setId(2);
session.delete(user);
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally{
HibernateUtil.close();
}
}
@Test
public void updateUser(){
try{
//方法一:先查找,再操作
/*Session session = HibernateUtil.getSession();
session.beginTransaction();
User user = (User)session.get(User.class, 2);
user.setName("lisi");
session.update(user);
session.getTransaction().commit();*/
//方法二:直接new出bean类,然后指明要更新的id,这种方法适合删除不适合更新,比如你只更新名字字段,其他的字段就会变成空
Session session = HibernateUtil.getSession();
session.beginTransaction();
User user = new User();
user.setId(2);
user.setName("利索");
session.update(user);
session.getTransaction().commit();
}catch(Exception e){
e.printStackTrace();
}finally{
HibernateUtil.close();
}
}
public void findUser(){
try{
Session session = HibernateUtil.getSession();
User user = (User)session.get(User.class, 1);
System.out.println(user.getId()+"----"+user.getName()+"----"+user.getBirthday());
}catch(Exception e){
e.printStackTrace();
}finally{
HibernateUtil.close();
}
}
//按id查找,懒加载;之所以说懒,是因为这里的load()方法与上面的get()方法有所不同,前者只有在使用load()方法返回的对象时才去执行sql语句,不使用不执行;而后者不一样,它不管什么时候都执行
@Test
public void loadUser(){
try{
Session session = HibernateUtil.getSession();
User user = (User)session.load(User.class, 1);
System.out.println(user.getId()+"----"+user.getName()+"----"+user.getBirthday());
}catch(Exception e){
e.printStackTrace();
}finally{
HibernateUtil.close();
}
}
//查找所有
@Test
public void findAll(){
try{
Session session = HibernateUtil.getSession();
Query query = session.createQuery("from User");
List list = query.list();
for(User user : list){
System.out.println(user.getId()+"----"+user.getName()+"----"+user.getBirthday());
}
}catch(Exception e){
e.printStackTrace();
}finally{
HibernateUtil.close();
}
}
}