欢迎浏览Java工程师SSH教程从零打造在线网盘系统系列教程,本系列教程将会使用SSH(Struts2+Spring+Hibernate)打造一个在线网盘系统,本系列教程是从零开始,因此会详细以及着重地阐述SSH三个框架的基础知识,第四部分将会进入项目实战,若是您已经对SSH框架有所掌握,那么能够直接浏览第四章,源码均提供在GitHub/ssh-network-hard-disk上供你们参阅html
Hibernate是一个对象关系映射框架,能够经过XML配置文件或者注解将数据库与实体Bean进行映射mysql
对于配置Hibernate咱们有不少种方法,例如XML配置,属性文件配置,编程方式配置,注解配置等.git
XML配置 小节完整示例代码下载github
编写名为Hibernate.cfg.xml的xml文件放入资源目录,根据下面形式对Hibernate进行配置sql
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- property 元素用于配置Hibernate中的属性 键:值 --> <!-- hibernate.connection.driver_class : 链接数据库的驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- hibernate.connection.username : 链接数据库的用户名 --> <property name="hibernate.connection.username">root</property> <!-- hibernate.connection.password : 链接数据库的密码 --> <property name="hibernate.connection.password">jimisun</property> <!-- hibernate.connection.url : 链接数据库的地址,路径 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/test</property> <!-- show_sql: 操做数据库时,会 向控制台打印sql语句 --> <property name="show_sql">true</property> <!-- format_sql: 打印sql语句前,会将sql语句先格式化 --> <property name="format_sql">true</property> <!-- hbm2ddl.auto: 生成表结构的策略配置 update(最经常使用的取值): 若是当前数据库中不存在表结构,那么自动建立表结构. 若是存在表结构,而且表结构与实体一致,那么不作修改 若是存在表结构,而且表结构与实体不一致,那么会修改表结构.会保留原有列. create(不多):不管是否存在表结构.每次启动Hibernate都会从新建立表结构.(数据会丢失) create-drop(极少): 不管是否存在表结构.每次启动Hibernate都会从新建立表结构.每次Hibernate运行结束时,删除表结构. validate(不多):不会自动建立表结构.也不会自动维护表结构.Hibernate只校验表结构. 若是表结构不一致将会抛出异常. --> <property name="hbm2ddl.auto">update</property> <!-- 数据库方言配置 org.hibernate.dialect.MySQLDialect (选择最短的) --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <!-- hibernate.connection.autocommit: 事务自动提交 --> <property name="hibernate.connection.autocommit">true</property> <!-- 将Session与线程绑定=> 只有配置了该配置,才能使用getCurrentSession --> <property name="hibernate.current_session_context_class">thread</property> <!-- 引入ORM 映射文件 填写src以后的路径 --> <mapping resource="com/jimisun/domain/User.hbm.xml"/> </session-factory> </hibernate-configuration>
属性文件配置 小节完整示例代码下载数据库
编写hibernate.properties的properties配置文件放入资源目录,配置形式以下编程
hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.connection.driver_class=com.mysql.jdbc.Driver hibernate.connection.url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8 hibernate.connection.username=root hibernate.connection.password=root hibernate.show_sql=true hibernate.format_sql=true hibernate.hbm2ddl.auto=update
编程配置session
编程配置hibernate在实际开发中使用较少,了解便可app
Configuration configuration = new Configuration(); configuration.addResource("mapping.xml") .setProperty("connection.username", "root") .setProperty("connection.password", "jimisun") .setProperty("dialect", "org.hibernate.dialect.MySWLDialect") .setProperty("connection.url", "jdbc:mysql://localhost:3306/test") .setProperty("connection.driver_class", "com.mysql.jdbc.Driver");
注解配置 小节完整示例代码下载框架
注解配置严格上来讲并非一种配置方式,仍然须要使用XML或者properties将Hibernate进行配置,在Bean实体和表之间的映射关系咱们就可使用注解进行配置,就不须要编写Bean对应的映射XML文件
首先使用XML或者properties配置hibernate
@Entity @Table(name = "user") public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Integer id; private String username; private String password; }
/** * 保存&更新User */ static void addUser() { Transaction transaction = session.beginTransaction(); User user = new User(); user.setUsername("jimisunl"); user.setPassword("jimisun"); session.saveOrUpdate(user); transaction.commit(); }
/** * 查找User * * @param theClass * @param id * @return */ static User getUser(Class theClass, Serializable id) { return (User) session.find(theClass, id); }
/** * 删除User * @param object */ static void deleteUser(Object object) { Transaction transaction = session.beginTransaction(); session.delete(object); transaction.commit(); }
掌握Hibernate的配置方式,能使用的HibernateSessionFactory的Session进行增删改查操做