在学习hibernate之前,你的电脑必须安装数据库,这里我用的是mysql(mysql下载地址:http://pan.baidu.com/s/1slpUABV)方便对数据库的操作我用的数据库图形化管理工具是SQLyog(下载地址:http://pan.baidu.com/s/1kURKsdD)接下来进入主题
步骤:
1,创建一个工程,并导入hibernater所需要的jar包(下载地址:http://pan.baidu.com/s/1gfFr2Af)我的工程结构图如下
2,修改配置文件
2.1把hibernate.cfg.xml复制到src目录下,hibernate.cfg.xml代码如下
<!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 name="foo">
<!-- 配置数据库信息 -->
<property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- hibernate_wxz数据库的名字 -->
<property name="connection.url">jdbc:mysql:///hibernate_wxz</property>
<!-- 驱动 -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<!-- 数据库的用户名,这是在你安装mysql你设置的用户名-->
<property name="connection.username">root</property>
<!-- 数据库的密码,这是在你安装mysql你设置的密码-->
<property name="hibernate.connection.password">root</property>
<!-- 其他配置 -->
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">false</property>
<!--
create:先删除,再创建
update:如果表不存在就创建,不一样就更新,一样就什么都不做。
create-drop:初始化时创建表,SessionFactory执行close()时删除表。
validate:验证表结构是否一致,如果不一致,就抛异常。
-->
<property name="hbm2ddl.auto">update</property>
<mapping resource="cn/wxz/hibernate/domain/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
2.2 创建一个用户类User代码如下:
package cn.wxz.hibernate.domain;
public class User {
private String id;
private String name;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", password=" + password + "]";
}
}
这个User对应的映射文件为User.hbm.xml一般要和影视类放一个包下面结构图如下:
User.hbm.xml的代码如下
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
<!-- name是影视类的路径 table是要在数据库中生成的表明 -->
<class name="cn.wxz.hibernate.domain.User" table="t_user">
<!-- name是User类中对应的id type是id对应的类型 -->
<id name="id" type="java.lang.String">
<!-- 这里的name是对应表中的列明 -->
<column name="id" length="32" />
<!-- 这里是用uuid表示全球唯一性 -->
<generator class="uuid.hex" />
</id>
<!-- 下面和id一样 -->
<property name="name" type="java.lang.String">
<column name="name" length="20" not-null="true" />
</property>
<property name="password" type="java.lang.String">
<column name="password" length="30" not-null="true" />
</property>
</class>
</hibernate-mapping>
3进行测试
3.1先在mysql中创建一个hibernate_wxz的数据库,打开SQLyog
3.2刷新如图操作
3.3能看到数据库已经生成
3.4写测试代码TestDemo类,代码如下
package cn.wxz.hibernate.domain;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import org.hibernate.classic.Session;
import org.junit.Test;
public class TestDemo {
private static SessionFactory sessionFactory;
static{
Configuration configuration = new Configuration();
Configuration configure = configuration.configure("hibernate.cfg.xml");//读取指定的主配置文件
sessionFactory=configure.buildSessionFactory();//生成session工厂
}
@Test
public void tsetGet(){
User user = new User();
user.setName("王西振");
user.setPassword("123");
//进行保存
Session session = sessionFactory.openSession();//打开一个新的session
Transaction transaction = session.beginTransaction();//开启事物,事物的作用是,要么同时成功要么同时失败,最典型的用处就是银行转账
session.save(user);
transaction.commit();//提交事物
session.close();//关闭session释放资源
}
public void tsetSave(){
Session session = sessionFactory.openSession();//打开一个新的session
Transaction transaction = session.beginTransaction();//开启事物,事物的作用是,要么同时成功要么同时失败,最典型的用处就是银行转账
User user= (User) session.get(User.class,1);
System.err.println(user);
transaction.commit();//提交事物
session.close();//关闭session释放资源
}
}
运行这个类的tsetGet()方法再查看数据库中表已经生成可知运行成功,即搭建环境成功,获取方法自己可以运行看,这里就不一一截图了