Hibernate 学习-----创建第一个简单的hibernate程序
应用数据库:MySQL
工具Myeclipse
1数据库中创建数据库bookstore,建立一个表books
2 建立一个java project
Src里面创建一个包com.dao,创建一个类Book (与数据库中表的字段相匹配的类)
代码:Book.java
package com.dao
import java.sql.Timestamp;
public class Book{
private Integer id;
private String name;
private String author ;
private Timestamp;
//声明私有变量与数据库中字段一致,对于主键变量类型尽量使用包装类。
//使用包装类原因:对于id,假如使用int类型,当输入Id为空时,java默认初始化id值为//0,而integer则默认初始化为null。
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 String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public Double getPrice() {
return price;
}
public void setPrice(Double price) {
this.price = price;
}
public Timestamp getCreat_time() {
return creat_time;
}
public void setCreat_time(Timestamp creat_time) {
this.creat_time = creat_time;
//使用工具自动生成各个变量的set和get方法
}
}
3 com.dao包下创建一个配置文件,告诉hibernate类对应的表即创建类与表之间的映射关系文件
创建Book.hbm.xml (注hbm hibernate mapping)
内容:
<?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 > <class name="com.dao.Book" table="books" lazy="false"> //class name指出类的路径,table数据库表的位置 <id name="id" type="int" column="id" > <generator class="increment"/> </id> //主关键字字段必须用id表示 //name 类中的变量名称,type 类型,colum 表中字段名 //Generator主关键字产生器 class=”increment” 自增长类型 <property name="name" not-null="true" column="name"/> //其他字段用property声明 其他一致 <property name="author" not-null="true" column="author"> </property> <property name="price" not-null="false" column="price"> </property> <property name="creat_time" not-null="true" column="creat_time"> </property> </class> </hibernate-mapping>
4 创建hibernate配置文件
hibernate.cfg.xml
在classpath中,即在src根目录下创建hibernate.cfg.xml
告诉hibernate要连接的数据库具体信息
代码:
<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory> <!-- Database connection settings --> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> //数据库驱动 <property name="connection.url">jdbc:mysql://localhost:3306/bookstore</property> //操作url <property name="connection.username">root</property> //数据库用户名 <property name="connection.password">158655</property> //数据库用户密码 <property name="show_sql">true</property>//是否把执行信息打印在控制台 <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource="com/dao/Book.hbm.xml"/> //指向路径。有多少类就加多少条,一一指明 </session-factory> </hibernate-configuration>
5.编写访问代码
创建包com.app
app.java
代码:
package com.app;
import java.sql.Timestamp;
import java.util.Calendar;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.dao.Book;
public class app {
public static Timestamp Creat_time()
{
Calendar c=Calendar.getInstance();
return new Timestamp(c.getTime().getTime());
}
//获取时间
public static void main(String[] args) {
try{
//有可能产生异常,使用try语句
Configuration cfg=new Configuration().configure();
//应用程序或资源的配置文件。无法继承此类。
SessionFactory sf= cfg.buildSessionFactory();
//Hibernate的核心接口之一 SessionFactory接口:SessionFactroy接口负责初始化Hibernate。它充//当数据存储源的代理,并负责创建Session对象。
Session session=sf.openSession();
Transaction ts= session.beginTransaction();
Book b=new Book();
b.setName("HelloWord");
b.setPrice(6.0);
b.setAuthor("GG");
b.setCreat_time(Creat_time());
session.save(b);
ts.commit();
session.close();
sf.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
}