• hibernate 入门案例


    hibernate框架介绍:

    ORM概念(非常重要)

    O,Object 对象.       R,Relation 关系.     M,Mapping 映射

    ORM:对象关系映射!

    ORM,攻克了什么问题?

    存储:是否能把对象的数据直接保存到数据库中

    获取:是否能直接从数据库拿到一个对象

    要想做到上述两点,必需要有映射

    总结:Hibernate与 ORM的关系:Hibernate是ORM的实现

    怎样搭建一个Hibernate开发环境,开发步骤:

    (1)下载源代码:版本号hibernate-distribution-3.6.0.Final

    (2)引入jar文件 :Hibernate3.jar核心+required必须引入的(6个)+jsp文件夹+mysql驱动

    (3)写对象以及对象的映射

    Employee.java 对象

    Employee.hbm.xml 对象的映射(一般我们使用hbm.xml结尾,这是为了区分Hibernate映射文件)

    (4)src/hibernate.cfg.xml(这个文件的命名必须这样写)

    1.Employee.java

    package cn.itcast.hello;
    
    import java.util.Date;
    
    public class Employee {
    	private int id;
    	private String empName;
    	private Date workDate;
    	public int getId() {
    		return id;
    	}
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getEmpName() {
    		return empName;
    	}
    	public void setEmpName(String empName) {
    		this.empName = empName;
    	}
    	public Date getWorkDate() {
    		return workDate;
    	}
    	public void setWorkDate(Date workDate) {
    		this.workDate = workDate;
    	}
    	
    }
    
    2.Employee.hbm.xml文件

    主要包含主键映射和非主键映射

    <?

    xml version="1.0"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd"> <hibernate-mapping package="cn.itcast.hello"> <class name="Employee" table="employee"> <!-- 主键 映射--> <id name="id"> <generator class="native"></generator> </id> <!-- 非主键 映射 --> <property name="empName" column="empName"></property> <property name="workDate" column="workDate"></property> </class> </hibernate-mapping>

    3.hibernate.cfg.xml文件

    (1)数据库连接的配置.假设不懂能够去Hibernate源代码/project/etc/hibernate.properties找到复制粘贴就可以

    (2)其它配置包含方言以及是不是自己主动建表的配置信息

    (3)映射文件的引入.<mapping resource="配置文件的文件夹"/>

    <!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>
    		<!-- 1.数据库的配置信息 -->
    		<property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
    		<property name="hibernate.connection.url">jdbc:mysql:///day25</property>
    		<property name="hibernate.connection.username">root</property>
    		<property name="hibernate.connection.password">169500</property>
    		
    		<!-- 2.其它配置信息。hibernate在执行的时候。会依据不同的方言生成符合当前数据库语法的sql语句 -->
    		<property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>
    		<!-- 显示sql语句信息 -->
    		<property name="hibernate.show_sql">true</property>
    		<property name="hibernate.hbm2ddl.auto">create</property>
    		<!-- 3.导入映射文件 -->
    		<mapping resource="cn/itcast/hello/Employee.hbm.xml"/>
    	</session-factory>
    </hibernate-configuration>
    4.測试类AppTest

    编写步骤:

    (1).获取载入配置文件的管理类对象.(2).载入配置文件.(3).创建session工厂对象.(4).创建session(代表的是一个对话。与数据库连接的会话).(5).开启事务.(6).与数据库的操作.(7).提交事务.(8).关闭资源.

    package cn.itcast.hello;
    
    import java.util.Date;
    
    import org.hibernate.SessionFactory;
    import org.hibernate.Transaction;
    import org.hibernate.cfg.Configuration;
    import org.hibernate.classic.Session;
    import org.junit.Test;
    
    public class AppTest {
    	@Test
    	public void test(){
    		Employee emp=new Employee();
    		emp.setEmpName("李卫康");
    		emp.setWorkDate(new Date());
    		//1.获取载入配置文件的管理类对象
    		Configuration config=new Configuration();
    		//2.载入配置文件
    		config.configure();//默认载入的是src文件夹下的hiberate.xml文件
    		//3.创建session工厂对象
    		SessionFactory factory = config.buildSessionFactory();
    		//4.创建session(代表的是一个对话。与数据库连接的会话)
    		Session session = factory.openSession();
    		//5.开启事务
    		Transaction tx = session.beginTransaction();
    		//6.与数据库的操作
    		session.save(emp);
    		//7.提交事务
    		tx.commit();
    		//8.关闭资源
    		session.close();
    		
    	}
    	
    }
    
    执行结果能够发现数据库中多了一个employee的表,并有一条记录






  • 相关阅读:
    Office EXCEL 如何设置最大行高
    网站SEO优化的方法
    ajax序列化表单,再也不用通过data去一个个的传值了
    java实现网站paypal支付功能并且异步修改订单的状态
    jquery报.live() is not a function的解决方法
    如何判断服务器是否挂掉
    mysql实现分页的几种方式
    sqlserver实现分页的几种方式
    十年前,女:“对不起,我不会喜欢你的,你不要再坚持了,就好比让 Linux 和 Windows 同时运行在一台PC机上,可能吗?
    实际项目开发中为什么引用的外部样式没有什么效果
  • 原文地址:https://www.cnblogs.com/yxysuanfa/p/6824551.html
Copyright © 2020-2023  润新知