public class Test {
private static SessionFactory factory;
static {
Configuration config = new Configuration().configure();
// 加载XML文件
factory = config.buildSessionFactory();
}
public static void saveUser(User user) {
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
session.save(user);
tx.commit();
session.close();
}
public static void updateUser(User user) {
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
user = (User) session.get(User.class, 2);
user.setName("222");
user.setPassword("ddd");
session.update(user); // 对象处于缓存之中
tx.commit();
session.close();
}
public static User findUserById(int id) {
Session session = factory.openSession();
User user = (User) session.get(User.class, id);
session.close();
return user;
}
public static void testSaveUser() {
User user = new User();
user.setCode("001");
user.setName("Tom");
user.setPassword("123");
saveUser(user);
}
public static void testObjectStatus() {
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
User user = null;
user = new User(); // 临时对象 user.setName("aaa"); user.setCode("004");
session.save(user); // 持久化对象 System.out.println("id:" + user.getId());
// session.saveOrUpdate(user);
// session.evict(user);
user = (User) session.get(User.class, 13);
user.setName("aaa");
session.flush(); // 手工清理缓存
// session.delete(user);
tx.commit();
session.close();
user.setCode("11");
user.setName("bbb");
user.setPassword("aadd");
// session.clear(); //此时user对象是游离态对象
}
public static void checkObjectState(Session session, Object obj) {
if (session.contains(obj)) {
System.out.println("obj 是持久态的");
} else {
System.out.println("obj 不是持久态的");
}
}
public static void testUpdate() {
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
User u1 = (User) session.get(User.class, 18);
tx.commit();
session.close();
}
public static void deleteUser(User user) {
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
session.delete(user);
tx.commit();
session.close();
}
public static void testHQL() {
Session session = factory.openSession();
// String hql = "select u from User as u, Grade g" +
// " where u.grade.id=g.id and g.name=?" +
// " order by u.code desc";
String hql = "from User u where u.grade.id in "
+ "( select g.id from Grade g where g.name=?)";
User u = (User) session.createQuery(hql).setString(0, "3班")
.setMaxResults(1).uniqueResult();
// for(User u : users) {
System.out.println("id:" + u.getId() + ", code:" + u.getCode());
// }
session.close();
}
public void TestQuery() {
Session session = factory.openSession();
Transaction tx = session.beginTransaction();
// String hql = "from User as user";
// String hql = "from User as user where user.name='liming2'";
// String hql = "select user.id, user.name from User as user";
// String hql = "from User as u where name = :name";
// String hql = "from User as user where user.name=?";
// String sql = "select u.* from t_user as u, t_grade as g where
// u.grade_id=g.id";
String hql = "select u from User u ,Grade g where u.grade.id=g.id";
Query query = session.createQuery(hql);
// query.setFirstResult(0);
// query.setMaxResults(3);
// query.setParameter("name", "liming");
// query.setString(0, "liming2");
List<User> users = (List) query.list();
// List<Object[]> users = query.list();
/*
* for(Object[] obj: users){ System.out.println(obj[0]);
* System.out.println(obj[1]); }
*/
for (User user : users) {
System.out.println("name: " + user.getName());
System.out.println("gradeName: " + user.getGrade().getName());
}
session.close();
}
private void testCriteria() {
Session session = factory.openSession();
Criteria cta = session.createCriteria(User.class);
User user = new User();
user.setName("liming");
cta.add(Example.create(user));
List<User> users = cta.list();
for (User u : users) {
System.out.println("name: " + u.getName());
System.out.println("gradeName: " + u.getGrade().getName());
}
}
private void testSQLQuery() {
Session session = factory.openSession();
List<User> list = session.createSQLQuery("select * from t_user")
.addEntity(User.class).list();
for (User u : list) {
System.out.print("name: " + u.getName() + "\t");
System.out.println("gradeName: " + u.getGrade().getName());
}
}
}