Hibernate 学习记录
2014-10-17 20:41
267 查看
当我们是使用框架时,我们希望事情能够变更简单。
编码能够变得更简洁,更酷。
所以,我们使用 Hibernate 来简化对数据库的操作。
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/
这是 Hibernate 的官方文档,目录就长的让人望而却步。
在学习新事物的时候,往往会困惑,需要啃完整本书或文档才开始干活吗?
No No No,真的啃完人都七老八十了,
。
如果真要看完这个文档,Hibernate 是来帮倒忙的了。
http://hibernate.org/orm/downloads/
下载最新的 Hibernate,目前的版本是 4.3.6。
把 required 目录中的包添加到依赖中,然后把 jdbc 驱动包也添加到依赖中。
然后,我们写一个配置文件,hibernate.cfg.xml。
逐条解释下,
使得可以使用 getCurrentSession 方法,简化对 Session 的管理。
显示 sql 语句,方便分析。
方言,拿 MySQL 来举例,MySQL 实现的引擎不只一种,哪种引擎就选哪种方言。
驱动,地址,用户名,密码。
需要映射的类的声明。
这个配置文件要放在 src 目录下。
然后来看看简单的实体类 Husband:
Hibernate 需要实体类保留无参数构造函数,所以得这么写。
然后看下 HibernateUtil 类:
最后,如何保存一个对象。
很酷吧,只要一句话,简单明了。
saveOrUpdate 这个方法会检查下表中是否存在该 objectId,存在则 update,反之则 save。
所以在执行插入和更改语句前,会先执行查询一句。
而 close 语句,好像是清理连接池的。
编码能够变得更简洁,更酷。
所以,我们使用 Hibernate 来简化对数据库的操作。
http://docs.jboss.org/hibernate/orm/4.3/manual/en-US/html_single/
这是 Hibernate 的官方文档,目录就长的让人望而却步。
在学习新事物的时候,往往会困惑,需要啃完整本书或文档才开始干活吗?
No No No,真的啃完人都七老八十了,
。
如果真要看完这个文档,Hibernate 是来帮倒忙的了。
http://hibernate.org/orm/downloads/
下载最新的 Hibernate,目前的版本是 4.3.6。
把 required 目录中的包添加到依赖中,然后把 jdbc 驱动包也添加到依赖中。
然后,我们写一个配置文件,hibernate.cfg.xml。
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Enable Hibernate's automatic session context management --> <property name="hibernate.current_session_context_class">thread</property> <property name="show_sql">true</property> <property name="dialect">org.hibernate.dialect.MySQL5InnoDBDialect</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://localhost/gt?characterEncoding=utf8</property> <property name="connection.username">root</property> <property name="connection.password">rrrjjj</property> <mapping class="model.Husband"/> </session-factory> </hibernate-configuration>
逐条解释下,
使得可以使用 getCurrentSession 方法,简化对 Session 的管理。
显示 sql 语句,方便分析。
方言,拿 MySQL 来举例,MySQL 实现的引擎不只一种,哪种引擎就选哪种方言。
驱动,地址,用户名,密码。
需要映射的类的声明。
这个配置文件要放在 src 目录下。
然后来看看简单的实体类 Husband:
package model; import javax.persistence.Entity; import javax.persistence.Table; @Entity @Table(name = "husband") public class Husband extends BaseEntity { private String name; public Husband() { } public Husband(String name) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
Hibernate 需要实体类保留无参数构造函数,所以得这么写。
然后看下 HibernateUtil 类:
public class HibernateUtil { private static final SessionFactory sessionFactory = buildSessionFactory(); private static Session getCurrentSession() { return sessionFactory.getCurrentSession(); } private static SessionFactory buildSessionFactory() { Configuration configuration = new Configuration().configure("hibernate.cfg.xml"); StandardServiceRegistryBuilder standardServiceRegistryBuilder = new StandardServiceRegistryBuilder().applySettings(configuration.getProperties()); StandardServiceRegistry standardServiceRegistry = standardServiceRegistryBuilder.build(); return configuration.buildSessionFactory(standardServiceRegistry); } public static void saveOrUpdateEntity(BaseEntity baseEntity) { Session session = getCurrentSession(); session.beginTransaction(); if (baseEntity.getObjectId() == null) { baseEntity.setObjectId(UUID.randomUUID().toString()); } session.saveOrUpdate(baseEntity); session.getTransaction().commit(); } public static void close(){ sessionFactory.close(); } }
最后,如何保存一个对象。
public static void main(final String[] args) throws Exception { HibernateUtil.saveOrUpdateEntity(new Husband("李顺生")); HibernateUtil.close(); }
很酷吧,只要一句话,简单明了。
saveOrUpdate 这个方法会检查下表中是否存在该 objectId,存在则 update,反之则 save。
所以在执行插入和更改语句前,会先执行查询一句。
而 close 语句,好像是清理连接池的。
相关文章推荐
- Hibernate学习记录
- hibernate缓存学习记录
- Hibernate学习记录2
- 记录hibernate 3学习过程中的报错(未完成)
- Hibernate学习及问题记录(1)——纠结的第一战
- 记录hibernate 3学习过程中的报错(未完成)
- Hibernate学习记录2 HQL常规操作
- Hibernate 学习记录 4
- Hibernate 学习记录 3
- hibernate多表查询学习记录
- 【hibernate】学习期间总结与记录
- hibernate学习记录3
- hibernate学习记录2
- Hibernate学习记录1
- hibernate学习记录8
- hibernate学习记录
- hibernate学习记录1
- hibernate学习记录6
- 【ssh2学习记录】3、关于ssh2框架整合以及hibernate的一些总结
- Hibernate学习记录1 基本概念