Hibernate 学习
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(); } } }