-
1.clob和text對應大文本文件,blob對應大的二進制文件,例如視頻音頻圖片 2.java中的clob對應存儲大文本文件,java中的blob對應存儲大二進制文件 MySQL不支持標準SQL的CLOB類型,在Mysql中,用TEXT,MEDIUMTEXT及LONGTEXT類型來表示長度超過255的長文本數據 獲取照片文件的寫法 File f=new File("照片的地址"+File.separator+"照片名字"); InputStream input =new FileInputStream(f); Blob image=Hibrbate.getLobCreator(session).createBlob(input,input.available()); s.setpPicture(image); session.save(s);查看全部
-
Hibernate基本數據類型 前兩列比較常用,例如在配置文檔中的type就經常使用這些。 date 表示日期:YYYY-MM-dd time 表示時間:hh:mm:ss tiemstamp時間戳: yyyy-MM-dd hh:mm:ss 另外,映射的數據類型設置會決定最后數據庫中的類型。 比如我們在Java程序中使用的是java.util.Date類型定義變量Birthday。但在映射關系的配置文檔中對應的type改成date類型,那么最后保存在數據庫的Birthday類型就是date,也就是YYYY-MM-dd,而非java.util.Date(或者timestamp)的YYYY-MM-dd hh:mm:ss。查看全部
-
單一主鍵:指表中由某一列來充當主鍵 assigned 由java應用程序負責生成(手工賦值) native 由底層數據庫自動生成提示符,如果是MySQL就是increment,如果是Oracle就是sequence,等等。另外,即使手動賦值主鍵,也不會起作用。 <generator class="native" />mysql 中為AUTO_INCREMENT PRIMARY KEY assigned 當為int時 默認0 其他默認null查看全部
-
hbm.xml常用配置 <br> <hibernate-mapping<br> schema="schemaName" //模式的名字<br> catalog="catalogName" //目錄的名稱<br> default-cascade="cassade_style" //級聯風格 @<br> default-access="field/property/CalssName" //訪問策略 @<br> default-lazy="true/false" //加載策略 @<br> package="packagename" //默認包名<br> ></hibernate><br> <class<br> name="ClassName" //對應映射的類<br> table="tableName" //對應映射數據庫的表<br> batch-size="N" //抓取策略,一次抓取多少記錄<br> where="condition" //條件 eg:抓取條件<br> entity-name="EntiyName" //如果需要映射多張表<br> ></class><br> <id //表的主鍵<br> name="propertyName" //對應的屬性<br> type="typeName" //對應類型<br> column="column_nam" //映射數據庫中表當中字段名的名稱<br> length="length" //指定長度<br> <generator class="generatorClass"></id> //主鍵生成策略 @<br> /><br> <br> 1、代理主鍵:是指與業務無關且能唯一標識數據庫中記錄,一般是數據庫自動生成的,比如mysql可以使用auto_increment,Sql2000可以使用identity生成方式,oracle可以使用sequence生成方式。<br> 2、自然主鍵:指業務相關,由用戶指定,且能唯一標識數據庫中的任意一條記錄。查看全部
-
openSession與getCurrentSession的區別: (1)getCurrentSession在事務提交或者回滾之后會自動關閉,而openSesssion需要你手動關閉。如果使用openSession而沒有手動關閉,多次之后會導致連接池溢出! (2)openSession每次創建新的session對象,getCurrentSession使用現有的session對象 openSession與getCurrentSession openSession 每次使用都是打開一個新的session,使用完需要調用close方法關閉session; getCurrentSession 是獲取當前session對象,連續使用多次時,得到的session都是同一個對象,這就是與openSession的區別之一 ; 一般在實際開發中,往往使用getCurrentSession多,因為一般是處理同一個事務,所以在一般情況下比較少使用openSession;查看全部
-
如何獲得session對象??? (1)openSessionion (2)getCurrentSession 如果使用getCurrentSession需要在hibernate.cfg.xml文件中進行配置: 如果是本地事務(jdbc事務) <property name="hibernate.current_session_context_class">thread</property> 如果是全局事務(jta事務) <property name="hibernate.current_session_context_class">jta</property> openSession 每次使用都是打開一個新的session,使用完需要調用close方法關閉session; getCurrentSession 是獲取當前session對象,連續使用多次時,得到的session都是同一個對象,這就是與openSession的區別之一 ; 一般在實際開發中,往往使用getCurrentSession多,因為一般是處理同一個事務,所以在一般情況下比較少使用openSession; 1,事務: 事務表示一個由一系列的數據庫操作組成的不可分割的邏輯單位,其中的操作要么全做要么全都不做 2,JDBC事務 JDBC事務由Connnection對象控制管理,也就是說,事務管理實際上是在JDBC Connection中實現。事務周期限于Connection的生命周期。 3,JTA事務 提供了跨數據庫連接(或其他JTA資源)的事務管理能力查看全部
-
Transaction事務簡介: 1. hibernate對數據庫的操作都是封裝在事務當中的,并且默認是非自動提交的方式。所以用session保存對象時,如果不開啟事務并且沒有手工提交事務,對象并不會真正保存在數據庫中。 2. 如果你想讓hibernate像jdbc那樣自動提交事務,必須調用session對象的doWork()方法,獲得jdbc的connection后,設置其為自動提交事務模式(注意:通常并不推薦這樣做) 綜上,我們必須開啟事務。 使用Session的doWork()方法提交事務(需要重寫execute()方法)。 需要注意的是:在使用save()方法后并不會真正輸出sql語句,需要調用flush()強制輸出sql語句才可以。然后因為采用了自動提交方式(setAutoCommit(true)),數據才真正保存在數據庫。查看全部
-
hibernate的執行流程 1.配置對象Configuration,作用: 讀取配置文檔:Hibernate.cfg.xml; 創建SessionFactory對象 2.SessionFactory,作用: 讀取相應的里面加載的對象關系映射文件 創建session文件 3.session,作用: 類似于JDBC中的Connection,這個session對象等同于連接對象 執行增刪改查: save,delete,update,get。 4.執行某個session對象的方法的時候,必須開啟一個事物transaction,這些方法需要封裝在事物當中。 5.執行完成方法之后,需要提交事務并且關閉session tx.commit() session.close() 1.不建議直接使用jdbc的connection操作數據庫,而是通過session操作數據庫。 2.session可以了解為操作數據庫的對象,操作數據庫之前必須先獲取session的實例 3.session與connection,是多對一關系,每個session都有一個與之對應的connection,一個connection不同時刻可以供多個session使用。 4.把對象保存到關系數據庫中需要調用session的各種方法:save(),update(),delete(),createQuery查看全部
-
hibernate.cfg.xml配置文檔的常用配置. 程序在運行的時候會讀取hibernate.cfg.xml配置文檔,從而實現連接數據庫,并且生成表結構. 設置了<property name="show_sql">true</property>,與<property name="format_sql">true</property>,則會把hibernate運行時對數據庫的操作時的sql語句會顯示在控制臺并且格式化. <property name="hbm2ddl.auto">create</property>,即重新刪除表結構再創建.所以之前的記錄消失. <property name="hbm2ddl.auto">update</property>,它不會刪除表結構也不會創建新的表結構,會保留原有的數據,只是更新.沒有"hbm2ddl.auto"屬性一樣也是可以添加新的數據,會保留原有的數據. <property name="hibernate.default_schema">hibernate</property>,則在控制臺輸出的sql語句中,會在表名之前加上數據庫名.查看全部
-
創建對象關系映射文件后,需在hibernate.cfg.xml配置文件聲明,例如: <mapping resource="com/apache/entity/User.xml" /> 代碼表示初始化 Hibernate 環境時將裝載User.xml 映射信息。 * 創建數據庫,字符集 和 排序規則 都設置為 utf-8 格式 * Source Folder -- 源程序文件 * 使用 junit 測試: @Test 測試注釋標簽 @Before 初始化方法 @After 釋放資源 測試框架 @Before public void init(){ } @After public void destroy(){ } @Test public void testSaveStudents(){ } 執行順序 @Before --> @Test --> @After查看全部
-
創建完數據持久類(實體類)后需要新建對象關系映射文件: 新建對象關系映射文件Student.hbm.xml New -> other - > Hibernate -> Hibernate XML Mapping file (hbm.xml) 選擇需要映射的剛創建的實體類,會將創建的字段和數據庫字段進行映射。 創建完對象關系映射文件后 需要在cfg.xml中配置文件聲明:如<mapping resource="Student.hbm.xml" ></mapping> 配置后將在初始化 Hibernate 環境時將裝載User.xml 映射信息。查看全部
-
hibernate配置文檔: <property name="connection.username">root</property> <property name="connection.password">root</property> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql:///hibernate?useUnicode=true&characterEncoding=UTF-8</property> <property name="dialect">org.hibernate.dialect.MySQLDialect</property> <property name="show_sql">true</property> <property name="format_sql">true</property> <property name="hbm2ddl.auto">create</property>查看全部
-
ecliplse Hibernate 插件 Hibernate Tools查看全部
-
獲得session對象的方法查看全部
-
transaction簡介1查看全部
舉報
0/150
提交
取消