-
hbm配置文件常用設置 hbm.xml配置文檔 <hibernate-mapping<br> schema="schemaName" //模式的名字 catalog="catalogName" //目錄的名稱 default-cascade="cassade_style" //級聯風格 default-access="field/property/CalssName" //訪問策略 default-lazy="true/false" //加載策略 package="packagename" //默認包名 /> <class<br> name="ClassName" //對應映射的類<br> table="tableName" //對應映射數據庫的表<br> batch-size="N" //抓取策略,一次抓取多少記錄<br> where="condition" //條件 eg:抓取條件<br> entity-name="EntiyName" //如果需要映射多張表<br> /> //表的主鍵 <id name="propertyName" //對應的屬性 type="typeName" //對應類型 column="column_nam" //映射數據庫中表當中字段名的名稱 length="length" //指定長度 <generator class="generatorClass"/>//主鍵生成策略 </id> 主鍵生成策略: 由于使用MYSQL,著重講解一下兩個 native:有底層數據庫自動生成標識符 assigned:手工賦值查看全部
-
如何獲得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簡介:事務 ·hibernate對數據的操作都是封裝在事務當中,并且默認是非自動提交的方式。 所以用session保存對象時,如果不開啟事務,并且手工提交事務,對象并不會真正保存在數據庫中。 ·如果想讓hibernate想jdbc那樣自動提交事務,必須調用session對象的doWork()方法,活得jdbc的connection后,設置其為自動提交事務模式。(注意:通常并不推薦這樣做) --自動提交事務(注意:通常并不推薦這樣做)--- //不開啟事務(transaction.commit()//提交事務)的方式 @Test public void testSaveStudents(){ Stusdents s= new Students(1,"ZSF",new Date(),"wudang"); session.doWork(new Work(){ @Override public void execute(Connection connection) throws SQLException{ connection.setAutoCommit(true); } }) session.save(s);//保存對象進入數據庫 session.flush();//強制發出SQL語句(通過SQL寫入SQL) } ---自動提交事務(注意:通常并不推薦這樣做)--- private Transaction transaction; transaction = session.beginTransaction();//打開事務 transaction.commit()//提交事務 需要注意的是:在使用save()方法后并不會真正輸出sql語句,需要調用flush()強制輸出sql語句才可以。然后因為采用了自動提交方式(setAutoCommit(true)),數據才真正保存在數據庫。查看全部
-
關于session的說明: 1.不建議直接使用jdbc的connection操作數據庫,而是通過使用session操作數據庫; 2.session可以理解為操作數據庫的對象; 3.session與connection,是多對一的關系,每個session都有一個與之對應的connection,一個connection不同時刻可以供多個session使用; 4.把對象保存到關系型數據庫中需要調用session的各種方法,如:save(),update(),delete(),createQuery()等。 1.Configuration對象:配置文件對象,讀取hibernate配置文件xxx.cfg.xml 2.SessionFactory對象:讀取對象/關系映射文件 xxx.hbm.xml 3.session對象:數據庫鏈接對象,獲得之后可以操作數據庫。可以理解為操作數據庫的對象 4.Transaction:使用session操作數據庫需要開啟的事務查看全部
-
hibernate配置文件的常用配置 hbm2ddl.auto: 1.create表示每次生成新的數據表,再對數據操作 2.update表示在原有舊的數據表上執行操作 3.create-drop表示先創建后刪除(不常用) 4.validate:用現有的表結構和原來的表結構進行驗證,如果不同就不創建 hibernate.default_schema:給數據庫表加上一個表前綴查看全部
-
@Before public void init() { // 創建配置對象 Configuration config = new Configuration().configure(); config.addClass(Student.class); // 創建服務注冊對象 ServiceRegistry serviceRegistery = new StandardServiceRegistryBuilder().applySettings(config.getProperties()).build(); // 創建會話工廠對象 sessionFactory = config.buildSessionFactory(serviceRegistery); // 創建會話對象 session = sessionFactory.openSession(); // 開啟事務 transaction = session.beginTransaction(); } @Test public void testSaveStudent() { Student s = new Student(1,"張三豐","男",new Date(),"武當山"); session.save(s); } @After public void destory() { // 提交事務 transaction.commit(); // 關閉會話 session.close(); // 關閉會話工廠 sessionFactory.close(); }查看全部
-
使用Junit進行測試 要使用到的標簽: @Test:要測試的方法。 @Before:初始化方法(表示在測試前會先執行before方法進行初始化)。 @After:釋放資源。 執行次序:@before標簽下的方法——>@test方法——>@after釋放資源。查看全部
-
<session-factory> <property name="connection.driver_class">com.mysql.jdbc.Driver</property> <property name="connection.url">jdbc:mysql://127.0.0.1:3306/hibernate?useUnicode=true&characterEncoding=UTF-8</property> <property name="connection.username">root</property> <property name="connection.password"></property> <property name="dialect">org.hibernate.dialect.MySQL5Dialect</property> <property name="show_sql">true</property> <! -- 在控制臺顯示出sql語句 -- > <property name="format_sql">true</property> <! -- 按照格式化顯示出sql語句 -- > <property name="hbm2ddl.auto">create</property> <! -- 會重新創建一張表 -- > <mapping resource="com/Student.hbm.xml" ></mapping> </session-factory>查看全部
-
0x5AC0 get方法立即發出sql語句 load不會 get方法返回的是實體對象 load是代理對象 查找失敗時 get返回null load拋出異常 時間: 2016-01-05 17查看全部
-
Hibernate中get和load的區別(2)查看全部
-
Hibernate中get和load的區別(1)查看全部
-
測試讀取數據庫中的blob類型的圖片查看全部
-
測試圖片作為blob類型存入數據庫查看全部
-
對象類型對應關系查看全部
-
基本類型 Hibernate映射類型—Java類型—標準SQL類型 間對應關系查看全部
舉報
0/150
提交
取消