`
Supanccy2013
  • 浏览: 225018 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

javaSe中使用Hibernate

阅读更多
   hibernate可用在javaSe中也可以用在javaSe中,在javaSe中使用的常规流程是:

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">
<!-- Generated by MyEclipse Hibernate Tools.                   -->
<hibernate-configuration >
    <session-factory>
         <!-- 
                              可以在对应jar包下众多方言中选择一种适合自己的方言
         -->
        <property name="dialect">org.hibernate.dialect.Oracle10gDialect</property>
        <property name="connection.url">jdbc:oracle:thin:@localhost:1521:ORCL</property>
        <property name="connection.username">EMG</property>
        <property name="connection.password">lgyw1236987</property>
        <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
        <property name="myeclipse.connection.profile">oracle.jdbc.driver.OracleDriver</property>
         <!--
                               自动根据配置文件创建表
           create:每次执行都重新创建新表,之前的记录都丢失
           update:每次执行都更新操作,之前的记录保留。
          -->
        <property name="hibernate.hbm2ddl.auto">update</property>
        <property name="show_sql">true</property>
        <mapping resource="News.hbm.xml"/>
        <mapping resource="Person.hbm.xml"/>
    </session-factory>
</hibernate-configuration>



表映射文件:
<?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的属性简介;
  default-lazy:默认是true,不应该关闭延迟加载策略,例如当加载一个teacher对象,且该Teacher对象有
  N个关联的Student对象,如果关闭延迟加载策略,则hibernate在加载teacher时候会自动加载所有的student
  对象,如果该teacher有一万个关联student对象,深圳更多,而程序仅需要访问teacher对象,则依次加载这些studetn
  对象纯属多余。
 default-access:则用来说明hibernate是通过反射访问类的getter、setter方法来访问属性的。
 default-cascade:默认的级联级别为none,可以在指定表中设置该属性来覆盖此处的默认设置。
   注意:上处三个属性都是指定hibernate默认的,可以在具体的表或字段中设置来覆盖此处的设置。
 package:指定一个包的前缀,如果calss标签属性name没有完成的类名就加上package的属性值组成完成的类
 auto-import:true:表示处于不同包下的两个名称相同的类映射同一个表。false:表示映射两个不同的表
  -->        
<hibernate-mapping default-lazy="true" default-access="property" >
    <!-- 
     class标签的属性简介:
     1 table:表示映射到数据库中的表的名称,默认的是类的名称
     2 mutable:用于指定持久化类的实例是可变的还是不可变的,只有true、false可选
     3 proxy:指定一个借口,在延迟加载时作为代理使用,也可以在这里指定该类的自己的名字
     -->
    <class name="com.supan.bean.News" dynamic-update="true" dynamic-insert="true">
        <id name="id" column="id" type="integer">
            <generator class="native"/>
        </id>
        <property name="title" type="string">
            <column name="username" length="20"/>
        </property>
        <property name="content" type="string">
            <column name="password" length="20"/>
        </property>
    </class>
</hibernate-mapping>
package com.supan.session;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.cfg.Configuration;
import com.supan.bean.News;
public class NewsManager {
	public static void main(String[] args) throws Exception {
		//获取配置对象,注意.configure()会自动读取hibernate.cfg.xml文件
		Configuration config = new Configuration().configure();
		//创建回话工厂sessionFactory是整个数据库映射关系经过编译后的内存影像,是线程安全的。
		SessionFactory sf = config.buildSessionFactory();
		//从回话工程中打开一个回话
		Session sess = sf.openSession();
		//该回话启动事物
		Transaction tx = (Transaction) sess.beginTransaction();
		//创建实体对象
		News mynew = new News();
		mynew.setTitle("hibernate的神奇");
		mynew.setContent("hibernate非常的神奇");
		//保存实体对象
		//注意因为该实体在映射文件中已经指定了标示符生成规则,在保存之前会自动的生成一个id分配给对象,并持久化到数据库中
		//如果标示符是assigned或者是符合主键,那么在save之前需要手动分配数值。
		/*
		 * save persist方法功能几乎完全一样:之所以提供两个方法,是因为:
		 * 1,照顾习惯了jpa的用法
		 * 2,save返回主键值,persist返回null
		 * 3,save因为需要返回主键值,所以会立即生成insert语句
		 *   persist则保证当它在一个事务外部被调用时,并不立即转换成insert这个是
		 *   非常有用的,尤其当我们封装一个长回话流程的时候。
		 */
//		System.out.println(sess.save(mynew));//返回持久化对象的主键值
//		System.out.println(sess.persist(mynew));//返回null
		//提交事物
		tx.commit();
		//关闭回话
		sess.close();
		//关闭事物
		sf.close();
	}
}
分享到:
评论

相关推荐

    在JavaSE下使用HibernateJPA所需的jar包

    在JavaSE环境中使用Hibernate JPA(Java Persistence API)进行数据持久化操作,需要引入一系列的jar包来构建完整的开发环境。这些jar包包含了对JPA规范的实现、Hibernate ORM框架的核心功能以及相关的依赖库。以下...

    在Java SE中使用Hibernate处理数据

    在Java SE环境中使用Hibernate处理数据是一项常见的任务,尤其是在开发企业级应用时,需要对数据库进行高效、灵活的管理和操作。Hibernate作为一个流行的Object-Relational Mapping(ORM)框架,能够简化Java程序员...

    javase 对数据库的操作

    综上所述,这个项目结合了JavaSE的数据库操作、Struts控制逻辑、Hibernate的ORM功能、jQuery的前端处理和jqGrid的数据展示,为初学者提供了一个完整的AJAX和jQuery应用实例,帮助他们理解如何在实际项目中整合这些...

    javase 版的QQ源码

    - **并发处理**:为了实现聊天的实时性,源码中会有大量使用到线程,每个用户连接对应一个线程,处理其发送和接收的消息。 - **线程同步**:如使用synchronized关键字或Lock接口,防止并发访问同一资源时的数据不...

    JavaSE知识仿QQ聊天室

    在本项目"JavaSE知识仿QQ聊天室"中,我们将探讨如何使用Java标准版(Java Standard Edition,简称JavaSE)的特性来实现一个类似于QQ的聊天室应用。这个项目主要涉及了Java中的网络编程、输入/输出(I/O)处理以及多...

    MyEclipse_Hibernate_Quickstart

    本篇文章将详细介绍如何使用MyEclipse Enterprise Workbench进行Hibernate开发的基础特征、概念和技术。通过构建一个简单的Java Hibernate应用来逐步展示整个开发过程。 #### 二、需求 为了能够顺利地进行此教程的...

    JavaSE面试题大全

    JavaSE面试题大全是针对Java基础部分的面试准备资料,涵盖了广泛的Java基础知识,旨在帮助面试者应对各种技术问题。在Java SE(标准版)的面试中,常常涉及到以下几个关键知识点: 1. **类和对象**:Java是一种面向...

    javaSE题目优化,与连接数据库

    在这个主题中,我们将探讨Java标准版(JavaSE)中的编程题目优化技巧以及如何使用Java连接MySQL数据库,这两个方面对于提升你的Java应用开发能力至关重要。 首先,让我们关注JavaSE题目优化。在学习过程中,解决...

    JavaSE导出jar(两种方法)

    在JavaSE导出jar时,如果项目中使用了Struts2,你需要特别注意以下几点: 1. **依赖处理**:Struts2依赖于许多其他库,如Spring、Hibernate等,确保这些库的JAR文件也包含在你的最终JAR中,或者在运行时它们可以...

    JavaSE技术入门

    Java学习路线图:Java学习路线图涉及从基础的JavaSE到企业级JavaEE的整个学习路径,包括了Struts、Hibernate、XML、J2EE/EJB、WebService、UML/Rose、Spring、Ajax、WebLogic等多种技术。这条路线图帮助学习者有计划...

    韩顺平javase javaee 所有源代码和课件

    从基础到进阶,涵盖JavaSE的语法、面向对象编程、集合框架、IO流、多线程、网络编程等内容,再到JavaEE的企业级应用开发,如Servlet、JSP、JDBC、EJB、Spring、Hibernate、Struts等框架的使用。 【标签】"韩顺平...

    JavaSE测试题.docx

    在JavaWeb方面,考试内容涉及使用SSM(Spring、SpringMVC、MyBatis)或SSH(Struts、Spring、Hibernate)等框架,完成如在线收藏夹网站的建设。这些网站不仅要求实现基本的书签管理功能,如添加书签、展示书签列表、...

    javase与javaee-api

    在学习JavaSE时,掌握Java语言基础、类库使用、异常处理、IO流操作、集合框架的使用以及多线程编程是至关重要的。Java集合框架包括List、Set、Map等接口,以及ArrayList、LinkedList、HashSet、HashMap等实现类,...

    javase进销存项目

    4. **对象关系映射(ORM)**:虽然不是必须,但为了简化数据库操作,开发者可能会选择使用Hibernate或MyBatis这样的ORM框架,将Java对象直接映射到数据库表,减少手写SQL的工作量。 5. **异常处理**:在编写代码时...

    彻底了解JAVASE、JAVAEE、JAVAWEB整个的知识体系的6张图

    - **集合框架**:ArrayList、LinkedList、HashMap、HashSet等数据结构的使用。 - **I/O流**:用于处理文件读写、网络通信等操作。 - **异常处理**:确保程序的健壮性。 - **多线程**:并发编程,包括线程同步、...

    JavaSE和JavaEE中文API帮助文档CHM格式

    这些API文档详细解释了各个类和方法的功能、参数及返回值,有助于开发者理解和使用Java标准版的特性。 JavaEE API则扩展了JavaSE,为构建分布式、企业级应用提供了框架和组件。它包括了Servlet、JSP(JavaServer ...

    JavaSE商品购物流程设计

    在JavaSE中,商品购物流程设计是一项关键的任务,它涉及到多个步骤和组件,包括用户交互、数据库操作、业务逻辑处理等。以下是对这个主题的详细解析: 1. **用户界面设计**:在Java中,我们可以使用Swing或JavaFX库...

    JavaSE信用卡管理系统

    在这个项目中,我们将深入探讨如何利用JavaSE技术来构建一个完整的信用卡管理系统,旨在理解和实践面向对象编程、数据库交互、用户界面设计等关键技能。 1. **系统架构** - **模型-视图-控制器(MVC)**:信用卡...

    达内教学课件JAVASE1

    这个压缩包中的文件按天划分,如`java_javase1_day01.xps`至`java_javase1_day05.xps`,暗示了这是一个逐步深入的学习过程,从基础到进阶,覆盖了Java SE的广泛领域。通过学习这些内容,开发者不仅可以掌握Java编程...

    JavaEE企业应用实战-Struts2+Spring3+Hibernate整合开发(第3版)

    - **Hibernate简介**:Hibernate是一个开源的对象关系映射(ORM)框架,它可以将对象模型映射到基于SQL的关系数据库中。通过Hibernate,开发者可以使用面向对象的方式来操作数据库。 - **Hibernate核心概念**: - *...

Global site tag (gtag.js) - Google Analytics