首先在eclips中下载hibernate插件http://download.jboss.org/jbosstools/neon/stable/updates/
建立hibernate.cfg.xml
hibernate步骤:
建立User类与数据库中的user表对应,形成持久化对象
User.hbm.xml如下
<class name="org.hibernate.entity.User" table="USER">
<id name="id" type="int">
<column name="USER_ID" />
<generator class="assigned" />
</id>
<property name="name" type="java.lang.String" length="20">
<column name="NAME" />
</property>
<property name="password" type="java.lang.String" length="12">
<column name="PASSWORD" />
</property>
<property name="type" type="java.lang.String" length="6">
<column name="TYPE" />
</property>
</class>
其中id标签对应表中的主键
UserDAO接口
public interface UserDAO {
void save(User user);
User findById(int id);
void delete(User user);
void update(User user);
}
UserDAOImpl实现类
public class UserDAOImpl implements UserDAO{
public void save(User user) {
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
try {
session.save(user);
tx.commit();
} catch(Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
HibernateUtil.closeSession();
}
}
public User findById(int id) {
User user = null;
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
try {
user = (User)session.get(User.class, id);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
HibernateUtil.closeSession();
}
return user;
}
public void delete(User user) {
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
try {
session.delete(user);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
HibernateUtil.closeSession();
}
}
public void update(User user) {
Session session = HibernateUtil.getSession();
Transaction tx = session.beginTransaction();
try {
session.update(user);
tx.commit();
} catch (Exception e) {
e.printStackTrace();
tx.rollback();
} finally {
HibernateUtil.closeSession();
}
}
}
HibernateUtil辅助类
private static SessionFactory sessionFactory;
private static Configuration configuration = new Configuration();
private static final ThreadLocal<Session> threadLocal = new ThreadLocal<Session>();
static {
try {
Configuration cfg = new Configuration().configure();
sessionFactory = cfg.buildSessionFactory();
} catch(Throwable ex) {
throw new ExceptionInInitializerError(ex);
}
}
public static SessionFactory getSessionFactory() {
return sessionFactory;
}
public static Session getSession() throws HibernateException {
Session session = (Session)threadLocal.get();
if(session == null || !session.isOpen()) {
if(sessionFactory == null) {
rebuildSessionFactory();
}
session = (sessionFactory != null) ? sessionFactory.openSession() : null;
threadLocal.set(session);
}
return session;
}
public static void closeSession() throws HibernateException {
Session session = (Session)threadLocal.get();
threadLocal.set(null);
if(session != null) {
session.close();
}
}
public static void rebuildSessionFactory() {
try {
configuration.configure("/hibernate.cfg.xml");
sessionFactory = configuration.buildSessionFactory();
} catch(Exception e) {
System.out.println("Error Creating SessionFactory");
e.printStackTrace();
}
}
public static void shutdown() {
getSessionFactory().close();
}
}
Configuration--SessionFactory---Session---Transaction
测试类如下
@Test
public void testSave() {
UserDAO userdao = new UserDAOImpl();
try {
User u = new User();
u.setId(22);
u.setName("freshbin000");
u.setPassword("tyb");
u.setType("admin");
userdao.save(u);
} catch (Exception e) {
e.printStackTrace();
}
}
经过一天的努力,终于实现了hibernate的第一个例子