标签:style blog http java color 使用
Hibernate核心内容是ORM(关系对象模型)。可以将对象自动的生成数据库中的信息,使得开发更加的面向对象。这样作为程序员就可以使用面向对象的思想来操作数据库,而不用关心繁琐的JDBC。所以,Hibernate处于三层架构中的D层(持久层)。
1、Hibernate可以使用在java的任何项目中,不一定非要使用在java web项目中。因为Hibernate不需要类似于tomact这些容器的支持,可以直接通过一个main方法进行测试。
2、通过下面的实例,可以发现使用Hibernate可以大大减少代码量。
3、由于使用了Hibernate,代码中不涉及具体的JDBC语句,所以就方便了代码的可移植性。
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration> <session-factory > <!-- mysql数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- mysql数据库名称 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property> <!-- 数据库的登陆用户名 --> <property name="hibernate.connection.username">root</property> <!-- 数据库的登陆密码 --> <property name="hibernate.connection.password">root</property> <!-- 方言:为每一种数据库提供适配器,方便转换 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> </session-factory> </hibernate-configuration>
import java.util.Date; public class User { private String id; private String username; private String password; private Date createTime; private Date expireTime; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String userName) { this.username = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Date getCreateTime() { return createTime; } public void setCreateTime(Date createTime) { this.createTime = createTime; } public Date getExpireTime() { return expireTime; } public void setExpireTime(Date expireTime) { this.expireTime = expireTime; } }
<?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.example.hibernate.User"> <id name="id"> <generator class="uuid"/> </id> <property name="username"/> <property name="password"/> <property name="createTime"/> <property name="expireTime"/> </class> </hibernate-mapping>其中的property标签是将要生成是数据库表中的字段,在这里不用关心各个字段是什么类型的。因为Hibernate会根据上面的实体类中属性的类型来决定将来表中字段的类型
<hibernate-configuration> <session-factory > <!-- mysql数据库驱动 --> <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property> <!-- mysql数据库名称 --> <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/hibernate_first</property> <!-- 数据库的登陆用户名 --> <property name="hibernate.connection.username">root</property> <!-- 数据库的登陆密码 --> <property name="hibernate.connection.password">root</property> <!-- 方言:为每一种数据库提供适配器,方便转换 --> <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property> <mapping resource="com/example/hibernate/User.hbm.xml"/> </session-factory> </hibernate-configuration>注意:必须是“/”而不能是“.”。
import org.hibernate.cfg.Configuration; import org.hibernate.tool.hbm2ddl.SchemaExport; /** * 将hbm生成ddl * @author BCH * */ public class ExoprtDB { public static void main(String[] args) { //默认读取hibernate.cfg.xml文件 Configuration cfr = new Configuration().configure(); SchemaExport export = new SchemaExport(cfr); export.create(true, true); } }到这里就可以生成User表了,但是如果直接运行ExoprtDB.java文件是不能生成User表的。因为在mysql数据中还没有建立数据库Hibernate-first。所以在mysql控制台中通过create database hibernate-first; use hibernate-first;之后再执行ExoprtDB.java文件就可以生成表了。
import java.util.Date; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class Client { public static void main(String[] args) { //读取配置文件 Configuration cfg = new Configuration().configure(); SessionFactory factory = cfg.buildSessionFactory(); Session session = null; try{ session = factory.openSession(); //开启事务 session.beginTransaction(); User user = new User(); user.setUsername("用户名"); user.setPassword("123"); user.setCreateTime(new Date()); user.setExpireTime(new Date()); session.save(user); //提交事务 session.getTransaction().commit(); }catch(Exception e){ e.printStackTrace(); //回滚事务 session.getTransaction().rollback(); }finally{ if(session != null){ if(session.isOpen()){ //关闭session session.close(); } } } } }
新手上路之Hibernate:第一个Hibernate例子,布布扣,bubuko.com
标签:style blog http java color 使用
原文地址:http://www.cnblogs.com/husam/p/3854031.html