Hibernate学习笔记

大小写不敏感

持久化类一般被定义为JavaBean,这是推荐的设计,但是并不是必须的。Hibernate也可以直接访问这些field。

所有的持久化类(persistent classes)都要求有无参的构造器,因为Hibernate必须使用Java反射机制来为你创建对象。

映射文件

一个映射文件看起来像这样

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客<hibernate-mapping>

用生命来证明(很感人的哦) - 小次子大头 - ┛,.转角 ; 遇到愛 〣    <class name="events.Event" table="EVENTS">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <id name="id" column="EVENT_ID">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客            <generator class="native"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        </id>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="date" type="timestamp" column="EVENT_DATE"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="title"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    </class>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客</hibernate-mapping>

class元素代表要持久化的类以及它对应的数据表(一般情况下一个类对应一个表)

id元素中的name属性代表持久化类的标识符,而column则代表对应表中的主键。除此之外我们还要用generrator属性定义标识符的生成策略。

property属性用于映射持久化类的字段。有时候你需要手工指定转换成为的数据库数据类型以及数据表

Hibernate配置

配置Hibernate的工作就是配置hibernate.properties或者hibernate.cfg.xml

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客hibernate.cfg.xml

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客<?xml version='1.0' encoding='utf-8'?>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客<!DOCTYPE hibernate-configuration PUBLIC

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客<hibernate-configuration>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <session-factory>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <!-- Database connection settings -->

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="connection.driver_class">org.hsqldb.jdbcDriver</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="connection.url">jdbc:hsqldb:hsql://localhost</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="connection.username">sa</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="connection.password"></property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <!-- JDBC connection pool (use the built-in) -->

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="connection.pool_size">1</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <!-- SQL dialect -->

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="dialect">org.hibernate.dialect.HSQLDialect</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <!-- Enable Hibernate's automatic session context management -->

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="current_session_context_class">thread</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <!-- Disable the second-level cache  -->

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <!-- Echo all executed SQL to stdout -->

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="show_sql">true</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <!-- Drop and re-create the database schema on startup -->

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <property name="hbm2ddl.auto">create</property>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <mapping resource="events/Event.hbm.xml"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    </session-factory>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客</hibernate-configuration>

在这里,我们配置了Hibernate的SessionFactory-一个关联于特定数据库全局的工厂(factory)。如果你要使用多个数据库,就要用多个的<session-factory>,通常把它们放在多个配置文件中(为了更容易启动)。

用Ant来构建程序 

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客build.xml

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客<project name="hibernate-tutorial" default="compile">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <property name="sourcedir" value="${basedir}/src"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <property name="targetdir" value="${basedir}/bin"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <property name="librarydir" value="${basedir}/lib"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <path id="libraries">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <fileset dir="${librarydir}">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客            <include name="*.jar"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        </fileset>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    </path>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <target name="clean">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <delete dir="${targetdir}"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <mkdir dir="${targetdir}"/>

2007年10月1日 - mnhzhang - mnhzhang的博客    </target>

2007年10月1日 - mnhzhang - mnhzhang的博客

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <target name="compile" depends="clean, copy-resources">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客      <javac srcdir="${sourcedir}"

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客             destdir="${targetdir}"

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客             classpathref="libraries"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    </target>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    <target name="copy-resources">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        <copy todir="${targetdir}">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客            <fileset dir="${sourcedir}">

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客                <exclude name="**/*.java"/>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客            </fileset>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客        </copy>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客    </target>

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客</project>

启动和辅助类

SessionFactory sessionFactory = new Configuration().configure().buildSessionFactory();

Session session = sessionFactory.getCurrentSession()

  映射 

理解对象标识符

映射组合

细粒度对象模型

Hibernate项目的主要目标之一就是支持细粒度模型,

实体类型和值类型Entity and value type

实体类型:一个实体类型对象拥有它自己的数据库标识符(primary key值),一个被实体引用的对象以一个引用的方式持久化在一个数据库中(a foreign key value)。一个实体拥有它自己的生命周期;它相对于其他实体独立存在。

值类型:一个值类型对象没有数据库标识符;它属于一个实体,并且它的持久化状态是嵌入到属主实体的数据表行中(除了集合类型以外,)值类型没有标识符或者标识符参数。值类型实例的生命周期绑定在它的属主实体上。

建立关系数据库模型的一个重要原则是在不会导致数据冗余的前提下,尽可能减少数据库表的数目及表之间的外键参照关系。

映射组合关系就是指多个类对应一个表的映射。如Address、Customer类对应CUSTOMER表。

主要通过<component>元素来完成的。

映射继承关系

数据表之间并不存在继承关系,如何映射类间的继承关系呢?有三种方法:

1.每一个具体类对应一个表table-per-concrete-class

2.整个继承层次对应一个表table-per-class-hierarchy

Hibernate学习笔记  - qingfengxia2 - 清风幻影的博客<hibernate-mapping>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
后台采用apache服务器下的cgi处理c语言做微信小程序后台逻辑的脚本映射。PC端的服务器和客户端都是基于c语言写的。采用mysql数据库进行用户数据和聊天记录的存储。.zip C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。
Spring是一个开源的Java框架,用于构建企业级应用程序。它提供了一种轻量级的、非侵入式的开发方式,通过依赖注入和面向切面编程等特性,简化了Java应用程序的开发过程。 以下是关于Spring学习的一些笔记: 1. IoC(控制反转):Spring通过IoC容器管理对象的创建和依赖关系的注入。通过配置文件或注解,将对象的创建和依赖关系的维护交给Spring容器来管理,降低了组件之间的耦合度。 2. DI(依赖注入):Spring通过依赖注入将对象之间的依赖关系解耦。通过构造函数、Setter方法或注解,将依赖的对象注入到目标对象中,使得对象之间的关系更加灵活和可维护。 3. AOP(面向切面编程):Spring提供了AOP的支持,可以将与业务逻辑无关的横切关注点(如日志、事务管理等)从业务逻辑中分离出来,提高了代码的可重用性和可维护性。 4. MVC(模型-视图-控制器):Spring提供了一个MVC框架,用于构建Web应用程序。通过DispatcherServlet、Controller、ViewResolver等组件,实现了请求的分发和处理,将业务逻辑和视图展示进行了分离。 5. JDBC和ORM支持:Spring提供了对JDBC和ORM框架(如Hibernate、MyBatis)的集成支持,简化了数据库访问的操作,提高了开发效率。 6. 事务管理:Spring提供了对事务的支持,通过声明式事务管理和编程式事务管理,实现了对数据库事务的控制和管理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值