学习hibernate基础

 

学习了hibernate和助教

1、hibernate是一个开放源码的对象关系映射框架。

2、解决数据库操作这一块;
3、双层应用
       应用程序层
       数据库层
    三层应用
      表述层
      业务逻辑层
      数据库层
  四层应用
      表述层
      业务逻辑层(Service)
      持久化层(DAO)
      数据库层
  N层应用

4、层与层之间存在自上而下的依赖关系,底层向上层提供接口,但是一般上一层模块不会跨越一层次去调用。

5、对象的持久化的概念

6、JDBC编程的缺点:
业务逻辑和数据库的访问代码掺杂在一起,使程序结构不清晰。
在程序代码中嵌入面向关系的sql语句,是开发人员不能完全运用面向对象的思维来编写程序
7、ORM模式(对象关系映射)
8、一般情况下,一个持久类和一个表对应,类的每个实例对应表的一条记录。
面向对象概念       面向关系概念
类                        表
对象                     表的行
属性                     表的列
9、在java应用中使用Hibernate的步骤
(1)、创建hibernate的配置文件
(2)、创建持久化类
(3)、创建对象-关系映射文件

(4)、通过hibernate API编写访问数据库的代码

10、hibernate.cfg.xml文件的配置

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
          "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
          "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration>

<session-factory>
	<property name="dialect">
		org.hibernate.dialect.Oracle9Dialect
	</property>
	<property name="connection.url">
		jdbc:oracle:thin:@localhost:1521:orcl
	</property>
	<property name="connection.username">scott</property>
	<property name="connection.password">tiger</property>
	<property name="connection.driver_class">
		oracle.jdbc.OracleDriver
	</property>
	<property name="myeclipse.connection.profile">Oracle</property>
	<property name="show_sql">true</property>
	<mapping resource="com/zyz/test/emp.hbm.xml" />
</session-factory>

</hibernate-configuration>	

 

11、写emp的配置文件emp.hbm.xml

 

<?xml version='1.0' encoding='UTF-8'?>
<!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.zyz.test.Emp" table="emp">
       <id name="empno" column="empno">  
         <generator class="assigned"></generator>
       </id>
       <property name="ename" column="ename"></property>
        <property name="job" column="job"></property>
        <property name="mgr" column="mgr"></property>
        <property name="hiredate" column="hiredate"></property>
        <property name="sal" column="sal"></property>
        <property name="comm" column="comm"></property>
        <property name="deptno" column="deptno"></property>
    </class>
</hibernate-mapping>

12、写简单的一个test的文件测试

package com.zyz.test;
import java.util.List;

import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

public class Test {
	public static void main(String[] args){
		Configuration configuration=new Configuration().configure("hibernate.cfg.xml");
		SessionFactory sessionFactory=configuration.buildSessionFactory();

		//获得session
		Session session=sessionFactory.openSession();
		//get和load查询
//		Emp s=(Emp)session.get(Emp.class,new Integer("7369"));//2是where条件
//		System.out.println(s.getEname());
//		Emp e=(Emp)session.load(Emp.class, new Integer("7369"));
//		System.out.println(e.getEname());
		//更新
//		Emp emp=new Emp();
		session.getTransaction().begin();
//		emp.setEmpno(7369);
//		emp.setEname("SMITH1");
//		session.update(emp);
//		Emp e=(Emp)session.get(Emp.class, new Integer("7369"));
//		System.out.println(e.getEname());
//		//新增
//		Emp emp=new Emp();
//		emp.setEmpno(1110);
//		emp.setEname("zhangsan");
//		session.save(emp);
//		emp.setEname("lisi");
		
//		session.getTransaction().commit();
		String hql="from emp ";
		Query query = session.createQuery(hql);
		query.setFirstResult(1);//从第二条
		query.setMaxResults(3);//取出三条
		List<Emp> emplist=query.list();
		for(Emp e:emplist){
			System.out.println(e.getEname());
		}
		session.close();
	}
}

问题:

1、配置映射关系的时候没有把映射关系找准。

2、hibernate.cfg.xml文件的配置的show_sql 配置为true是可以看到sql的执行语句的。

3、增加的时候存在主键的时候emp.hbm.xml文件需要设置

<generator class="assigned"></generator>

 

 
要清楚主键的几种配置方式
 

4、取出部分

query.setFirstResult(1);//从第二条
query.setMaxResults(3);//取出三条

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值