package com.ethan.dao;
import com.ethan.domain.User;
public interface UserDao {
public void saveUser(User user);
public User findUserByName(String name);
public User findUserById(int id);
public void updateUser(User user);
public void remove(User user);
}
package com.ethan.dao.impl;
import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Restrictions;
import com.ethan.dao.UserDao;
import com.ethan.domain.User;
import com.ethan.hibernate.util.HibernateUtil;
public class UserDaoHibernateImpl implements UserDao {
@Override
public void saveUser(User user) {
}
@Override
public User findUserByName(String name) {
Session s = null;
try {
s = HibernateUtil.getSession();
Criteria c = s.createCriteria(User.class);
//unique=true
c.add(Restrictions.eq("name", name));
User user = (User) c.uniqueResult();
return user;
} finally {
if(s!=null) {
s.close();
}
}
}
@Override
public User findUserById(int id) {
Session s = null;
try {
s = HibernateUtil.getSession();
User user = (User) s.get(User.class, id);
return user;
} finally {
if(s!=null) {
s.close();
}
}
}
@Override
public void updateUser(User user) {
}
//效率上有浪费,id传过来再去数据库查得到user对象
@Override
public void remove(User user) {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
s.delete(user);
tx.commit();
} finally {
if(s!=null) {
s.close();
}
}
}
}
package com.ethan.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.Transaction;
import com.ethan.domain.IdCard;
import com.ethan.domain.Person;
import com.ethan.hibernate.util.HibernateUtil;
public class One2One {
public static void add() {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
IdCard idCard = new IdCard();
idCard.setExpiration(new Date());
Person p = new Person();
p.setName("p1");
p.setIdCard(idCard);
//这句话必须有,否则外键也是主键设置不了,null
idCard.setPerson(p);
tx = s.beginTransaction();
s.save(p);
s.save(idCard);
tx.commit();
} finally {
if(s!=null) {
s.close();
}
}
}
public static void query() {
Session s = null;
Transaction tx = null;
try {
s = HibernateUtil.getSession();
tx = s.beginTransaction();
// Person p = (Person) s.get(Person.class, 1);
// System.out.println(p.getIdCard().getExpiration());;
IdCard idCard = (IdCard) s.get(IdCard.class, 1);
System.out.println(idCard.getPerson().getName());
tx.commit();
} finally {
if(s!=null) {
s.close();
}
}
}
}
package com.ethan.test;
import static org.junit.Assert.*;
import org.junit.Test;
import com.ethan.hibernate.One2One;
public class TestOne2One {
@Test
public void add() {
One2One.add();
}
@Test
public void query() {
One2One.query();
}
}