## 创建HelloWorld程序
1) 新建Java程序
2)导入hibernate需要的jar包到lib下
3)在src下编写配置文件hibernate.cfg.xm (根据数据库情况编写)
<!-- 约束 -->
<!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 name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>
<!-- 指定数据库 -->
<property name="dialect">org.hibernate.dialect.MySQL5Dialect</property>
<!-- 打印sql语句 -->
<property name="show_sql">true</property>
<!-- 格式化sql语句 -->
<property name="format_sql">true</property>
<!-- 指定映射文件 -->
<mapping resource="com/qjh/pojo/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>
4)新建数据表
5)新建User类 (建议序列化 使用HanshCode和equals方法 getter setter toString)
package com.qjh.pojo;
import java.io.Serializable;
//POJO类必须提供无参构造方法
//推荐实现序列化,重写hashCode和equals方法
public class User implements Serializable{
private Integer id;
private String name;
private Integer age;
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((age == null) ? 0 : age.hashCode());
result = prime * result + ((id == null) ? 0 : id.hashCode());
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (age == null) {
if (other.age != null)
return false;
} else if (!age.equals(other.age))
return false;
if (id == null) {
if (other.id != null)
return false;
} else if (!id.equals(other.id))
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", age=" + age + "]";
}
}
6)在包下编写User.hbm.xml映射文件
<!-- 约束-->
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- 映射文件 -->
<hibernate-mapping>
<!-- package指定包 table指定类所对应的数据表名 -->
<class name="com.qjh.pojo.User" table="t_user">
<!-- 主键映射
在hibernate中,类所对应的表必须要有主键
例:name为类的属性名 colum是属性名对应的表对应名称,类型为属性类型
column默认和属性名一致,类型也默认一致
-->
<id name="id" column="id" type="int">
<!-- 主键生成策略 即自增长-->
<generator class="native"/>
</id>
<property name="name" column="name" type="string"></property>
<property name="age" column="age" type="int"></property>
</class>
</hibernate-mapping>
7)测试结果 由于我的版本是3 因此不用创建服务
package com.qjh.pojo;
import javax.imageio.spi.ServiceRegistry;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.boot.registry.StandardServiceRegistry;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
public class Test {
public static void main(String[] args)
{
//1.读取hibernate配置文件
Configuration cfg=new Configuration().configure();
//2.创建服务注册 hibernate4以后需要创建服务 4版本以前不用
//3.新建SessionFactory对象
SessionFactory sf = cfg.buildSessionFactory();
//4.创建session对象 注意不是httpsession
Session session =sf.openSession();
//5.获取数据
User user = session.get(User.class, 1);
System.out.println(user);
//6.释放资源
sf.close();
session.close();
}
}
结果