1.为什么要使用hibernate框架?
①java面向对象,是对象模型,主要概念有:继承、多态,而数据库是关系模型,主要概念:表,主键,外键,当用面向对象语言操作关系
型数据库,就会出现模型不匹配(阻抗不匹配)。
②jdbc的查询操作中将查找出来的关系模型转换为对象模型,例如:User user=new User();user.serUserName(),插入操作又将对象
User.hbm.xml
User.java
Base.java
源代码下载地址:
①java面向对象,是对象模型,主要概念有:继承、多态,而数据库是关系模型,主要概念:表,主键,外键,当用面向对象语言操作关系
型数据库,就会出现模型不匹配(阻抗不匹配)。
②jdbc的查询操作中将查找出来的关系模型转换为对象模型,例如:User user=new User();user.serUserName(),插入操作又将对象
模型转换为关系模型,preparedStatement.setString(1,user.getName);转换代码都是体力活,重复性的操作。
2.mysql查看表结构的方法:show create table user;
3.显示数据库支持的引擎:show engines;
4.hibernate中的一些属性的配置可以到etc文件夹下面的hibernate.properties文件中进行查找。
实例:对User表进行映射实现添加操作。
目录结构:
hibernate.cfg.xml
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory name="foo">
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="hibernate.connection.url">jdbc:mysql:///test</property>
<property name="hibernate.connection.username">root</property>
<property name="hibernate.connection.password">root</property>
<property name="show_sql">true</property>
<!-- 自动生成表,hbm2ddl -->
<property name="hibernate.hbm2ddl.auto">update</property>
<property name="hibernate.format_sql">true</property>
<!-- 包含映射文件 -->
<mapping resource="cn/itcast/hibernate/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
User.hbm.xml
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping
package="cn.itcast.hibernate.domain">
<class name="User">
<id name="id">
<generator class="native"/>
</id>
<property name="name"/>
<property name="birthday"/>
</class>
</hibernate-mapping>
User.java
package cn.itcast.hibernate.domain;
import java.util.Date;
public class User {
private int id;
private String name;
private Date birthday;
<span style="white-space:pre"> </span>/**get/set方法*/
}
Base.java
package cn.itcast.hibernate;
import java.util.Date;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import cn.itcast.hibernate.domain.User;
public class Base {
public static void main(String[] args) {
/** hibernate初始化 */
Configuration cfg = new Configuration();
cfg.configure();
/** 初始化目的获取sessionFactory对象 */
SessionFactory sf = cfg.buildSessionFactory();
/** 获取session对象 */
Session s = sf.openSession();
/**事务配置*/
Transaction tx=s.beginTransaction();
/** 进行java类的持久化操作 */
User user = new User();
user.setBirthday(new Date());
user.setName("name");
s.save(user);
tx.commit();
/** 关闭资源 */
s.close();
System.out.println("end.....");
}
}
源代码下载地址: