hibernatehqlsql
⑴ Hibernate 的HQL和sql有什麼區別
sql 面向資料庫表查詢
hql 面向對象查詢
hql : from 後面跟的 類名+類對象 where 後 用 對象的屬性做條件
sql: from 後面跟的是表名 where 後 用表中欄位做條件
查詢
在Hibernate中使用查詢時,一般使用Hql查詢語句。
HQL(Hibernate Query Language),即Hibernate的查詢語言跟SQL非常相像。不過HQL與SQL的最根本的區別,就是它是面向對象的。
⑵ 如何得到hibernate顯示在控制台的hql或sql語句
不知道樓主的意思是不是把那些佔位符換成具體的值,這樣就可以直接復制SQL語句在資料庫控制台粘貼直行了。
如果是這樣的話。樓主有沒有注意過直行hibernate時總是報的警告:
log4j:WARN Please initialize the log4j system properly.
使用這個log4j就可以顯示相信信息。
我給你一個屬性文件:log4j.properties把他放到和hibernate.cfg.xml相同目錄下。修改屬性文件中屬性log4j.logger.org.hibernate.type=debug
這樣,就可以顯示詳細數據了。
把以下內容保存命名log4j.properties
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### direct messages to file hibernate.log ###
#log4j.appender.file=org.apache.log4j.FileAppender
#log4j.appender.file.File=hibernate.log
#log4j.appender.file.layout=org.apache.log4j.PatternLayout
#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
### set log levels - for more verbose logging change 'info' to 'error' ###
log4j.rootLogger=warn, stdout
#log4j.logger.org.hibernate=info
log4j.logger.org.hibernate=error
### log HQL query parser activity
#log4j.logger.org.hibernate.hql.ast.AST=error
### log just the SQL
#log4j.logger.org.hibernate.SQL=error
### log JDBC bind parameters ###
log4j.logger.org.hibernate.type=debug
#log4j.logger.org.hibernate.type=error
### log schema export/update ###
log4j.logger.org.hibernate.tool.hbm2ddl=error
### log HQL parse trees
#log4j.logger.org.hibernate.hql=error
### log cache activity ###
#log4j.logger.org.hibernate.cache=error
### log transaction activity
#log4j.logger.org.hibernate.transaction=error
### log JDBC resource acquisition
#log4j.logger.org.hibernate.jdbc=error
### enable the following line if you want to track down connection ###
### leakages when using ###
#log4j.logger.org.hibernate.connection.=trace
⑶ hql和sql的區別
資料庫中hql與sql的區別:
1、sql 面向資料庫表查詢。
2、hql 面向對象查詢。
3、hql : from 後面跟的 類名+類對象 where 後 用 對象的屬性做條件。
4、sql: from 後面跟的是表名 where 後 用表中欄位做條件查詢。
5、在Hibernate中使用查詢時,一般使用Hql查詢語句。
6、HQL(Hibernate Query Language),即Hibernate的查詢語言跟SQL非常相像。不過HQL與SQL的最根本的區別,就是它是面向對象的。
⑷ Hibernate中的SQL寫法。
我比較喜歡hibernate本身自帶的HQL語言,增刪改查語句基本不用自己寫。
添加:
Admin admin=new Admin();
admin.set...();
session.save(admin);
刪除:
session.delete(admin);
修改:
Admin admin=session.load(Admin.class,new Integer(i));
session.saveOrUpdate(admin);
查詢:
Query query = session.createQuery("select OBJECT(o) from Admin o order by o.adminid");
亦可寫成:
Query query = session.createQuery("from Admin");
注意:hibernate的業務邏輯操作必須放在事務中,代碼如下:
Transaction tr = session.beginTransaction();
try {
****增刪改查語句***
// 提交事務
tr.commit();
} catch (Exception e) {
// 回滾事務
tr.rollback();
} finally {
}
還有,hibernate內的語句不是SQL,而是HQL,但它支持SQL,又它特定的寫法;表名不是資料庫的名字,而是映射後的實體類(表)的名字;而且,是直接對資料庫進行操作,也就hibernate的事務一提交,資料庫內的信息就做了相應的修改;最後,hibernate不是個軟體,而是一個插件,通俗的說法是別人寫好的「包」,導入項目後,根據「包」的規范去做快速開發。