Hibernate初识与入门(一)

一、了解Hibernate

O/R Mapping指的对象关系映射,实现了Java应用中的对象到关系数据库中的表的自动的(和透明的)持久化;使用元数据描述对象与数据库间的映射。

1.下载资源:www.hibernate.org
2、资源介绍hibernate-release-4.3.10.Final
a)Documentation 相关文档
b)Lib 相关jar包
c)Project相关资源文件,模板文件,源码等
3、搭建hibernate环境:
a)新建一个java项目
b)导入相关jar包
antlr-2.7.7.jar
dom4j-1.6.1.jar
hibernate-commons-annotations-4.0.5.Final.jar
hibernate-core-4.3.10.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-1.1.0.Final.jar
javassist-3.18.1-GA.jar
jboss-logging-3.1.3.GA.jar
jboss-logging-annotations-1.2.0.Beta1.jar
jboss-transaction-api_1.2_spec-1.0.0.Final.jar
mysql-connector-java-5.1.20-bin.jar

二、hibernate配置

  • 设置基本的hibernate配置文件(文件名默认为hibernate.cfg.xml)
<hibernate-configuration>
	<session-factory>
		<!--显示实际操作数据库时的SQL-->
		<property name="show_sql">true</property>
		<!--SQL方言,这边设定的是MySql-->
		<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
		<!--JDBC驱动程序-->
		<property name="connection.drive_class">conn.musql.jdbc.Drive</property>
		<!--JDBC URL-->
		<property name="connection.url">jdbc:mysql://localhost/demo</property>
		<!--数据库使用者-->
		<property name="connectiuon.username">caterpillar</property>
		<!--数据库密码-->
		<property name="connection.password">123456</property>
	<!--对象与数据库表格映像文件-->
	<mapping resourse="com/svse/pojo/User.hbm.xml">
	</session-factory>

	<!--以下是争对oracle-->
	<session-factory>

        <!-- Database connection settings -->
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="connection.url">
				jdbc:oracle:thin:@localhost:1521:orcl</property>
        <property name="connection.username">scott</property>
        <property name="connection.password">tiger</property>  
        <!-- SQL dialect -->
        <property name="dialect">org.hibernate.dialect.Oracle9Dialect</property>
        <!-- 显示正在执行的数据库操作 -->
        <property name="show_sql">true</property>
        <!-- 描述映射文件的路径 -->
		<mapping resource="com/svse/pojo/Users.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

三、实体类的配置xml

  • 对用实体类的User.hbm.xml
<hibernate-mapping>
	<class name="com.svse.User" table="User">
		<id name="id" column="id" type="java.lang.Integer">
			<generator class="native" />
		</id>
		<!--如果上面方式报错就按下面的方式来-->
        <id name="userid">
			<generator class="sequence">
				<param name="sequence">seq_users</param>
			</generator>
		</id>
		<property name = "name" coloum="name" type="java.lang.String" />
		<property name="age" coloum="age" type="java.lang.Integer" />
	</class
</hibernate-mapping>

四、撰写第一个hibernate

  • 现在我们来撰写一个测试的程序
  • 方法一:
public class Testhibernate{
	public static void main(Stringp[] args){
		//configuration 负责管理	Hibernate 配置信息
		Configuration config = new Configuration().configure();
		//根据config建立SessionFactory
		//SessionFactory将用于建立Session
		SessionFactory sessionFactory = config.buildSessionFactory();
		//将持久化的对象
		User user = new User();
		user.setName("wangxi");
		user.setAge(new Integer(30));
		//开启session 相当于开启JDBC的Connection
		Session session = sessionFactory.openSession();
		//Transaction表示一组对DB的交易
		Transaction tx = session.beginTransaction();
		//将对象映像至数据表格中储存
		session.save(user);
		tx.commit;
		session.close;
		sessionFactory.close();
		System.out.println("新增资料OK!请先用MySQL观看结果");
	}
}
  • 方法二
public static void main(String[] args){
	Configuration config = new Configuration().configure();
	SessionFactory sessionFactory = confi.buildSessionFactory();
	Ss=ession session = sessionFactory.openSession();
	//使用HQL建立查询--1
	Query query = session.createQuery("from User");
	List users = query.list();
	Iterator iterator = users.iterator();
	<!--hasNext:没有指针下移操作,只是判断是否存在下一个元素-->
	while(iterator.hasNext()){
		User user = (User)iterator.next();
	}
	//使用HQL建立查询--2
	query = session.CreateQuery("from User user where user.name like ?");
	//设定查询参数
	query.setParameter(0,"wangxi");
	users = query.list();
	iterator = users.iterator();
	while(iterator.hasNext()){
		<!--next:指针下移,返回该指针所指向的元素-->
		User user = (User) iterator.next();
		System.out.println(user.getId() + " \t " + user.getName() +user.getAge());  
	}
	session.close();        
	sessionFactory.close();   
}

以上测试相当于:
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值