电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

java關于持久層面試題目整理

瀏覽:5日期:2022-09-04 14:30:33

一、什么是ORM?

對象關系映射(Object-Relational Mapping,簡稱ORM)是一種為了解決程序的面向對象模型與數據庫的關系模型互不匹配問題的技術;

簡單的說,ORM是通過使用描述對象和數據庫之間映射的元數據(在Java中可以用XML或者是注解),將程序中的對象自動持久化到關系數據庫中或者將關系數據庫表中的行轉換成Java對象,其本質上就是將數據從一種形式轉換到另外一種形式。

二、Hibernate中SessionFactory是線程安全的嗎?Session是線程安全的嗎(兩個線程能夠共享同一個Session嗎)?

SessionFactory對應Hibernate的一個數據存儲的概念,它是線程安全的,可以被多個線程并發訪問。SessionFactory一般只會在啟動的時候構建。對于應用程序,最好將SessionFactory通過單例模式進行封裝以便于訪問。

Session是一個輕量級非線程安全的對象(線程間不能共享session),它表示與數據庫進行交互的一個工作單元。Session是由SessionFactory創建的,在任務完成之后它會被關閉。Session是持久層服務對外提供的主要接口。

Session會延遲獲取數據庫連接(也就是在需要的時候才會獲取)。為了避免創建太多的session,可以使用ThreadLocal將session和當前線程綁定在一起,這樣可以讓同一個線程獲得的總是同一個session。Hibernate 3中SessionFactory的getCurrentSession()方法就可以做到。

三、Session的save()、update()、merge()、lock()、saveOrUpdate()和persist()方法分別是做什么的?有什么區別?

Hibernate的對象有三種狀態:瞬時態(transient)、持久態(persistent)和游離態(detached)。

瞬時態的實例可以通過調用save()、persist()或者saveOrUpdate()方法變成持久態;

游離態的實例可以通過調用 update()、saveOrUpdate()、lock()或者replicate()變成持久態。save()和persist()將會引發SQL的INSERT語句,而update()或merge()會引發UPDATE語句。

save()和update()的區別在于一個是將瞬時態對象變成持久態,一個是將游離態對象變為持久態。merge()方法可以完成save()和update()方法的功能,它的意圖是將新的狀態合并到已有的持久化對象上或創建新的持久化對象。

對于persist()方法,按照官方文檔的說明:

1、persist()方法把一個瞬時態的實例持久化,但是并不保證標識符被立刻填入到持久化實例中,標識符的填入可能被推遲到flush的時間;

2、persist()方法保證當它在一個事務外部被調用的時候并不觸發一個INSERT語句,當需要封裝一個長會話流程的時候,persist()方法是很有必要的;

3、save()方法不保證第2條,它要返回標識符,所以它會立即執行INSERT語句,不管是在事務內部還是外部。至于lock()方法和update()方法的區別,update()方法是把一個已經更改過的脫管狀態的對象變成持久狀態;lock()方法是把一個沒有更改過的脫管狀態的對象變成持久狀態。

四、闡述Session加載實體對象的過程

1、Session在調用數據庫查詢功能之前,首先會在一級緩存中通過實體類型和主鍵進行查找,如果一級緩存查找命中且數據狀態合法,則直接返回;

2、如果一級緩存沒有命中,接下來Session會在當前NonExists記錄(相當于一個查詢黑名單,如果出現重復的無效查詢可以迅速做出判斷,從而提升性能)中進行查找,如果NonExists中存在同樣的查詢條件,則返回null;

3、如果一級緩存查詢失敗查詢二級緩存,如果二級緩存命中直接返回;

4、如果之前的查詢都未命中,則發出SQL語句,如果查詢未發現對應記錄則將此次查詢添加到Session的NonExists中加以記錄,并返回null;

5、根據映射配置和SQL語句得到ResultSet,并創建對應的實體對象;

6、將對象納入Session(一級緩存)的管理;

7、如果有對應的攔截器,則執行攔截器的onLoad方法;

8、如果開啟并設置了要使用二級緩存,則將數據對象納入二級緩存;

9、返回數據對象。

五、MyBatis中使用#和$書寫占位符有什么區別?

#將傳入的數據都當成一個字符串,會對傳入的數據自動加上引號;

$將傳入的數據直接顯示生成在SQL中。

注意:使用$占位符可能會導致SQL注射攻擊,能用#的地方就不要使用$,寫order by子句的時候應該用$而不是#。

內容補充:

JDBC編程有哪些不足之處,MyBatis是如何解決這些問題的?

● JDBC:數據庫鏈接創建、釋放頻繁造成系統資源浪費從而影響系統性能,如果使用數據庫鏈接池可解決此問題。

MyBatis:在SqlMapConfig.xml中配置數據鏈接池,使用連接池管理數據庫鏈接。

● JDBC:Sql語句寫在代碼中造成代碼不易維護,實際應用sql變化的可能較大,sql變動需要改變java代碼。

MyBatis:將Sql語句配置在XXXXmapper.xml文件中與java代碼分離。

● JDBC:向sql語句傳參數麻煩,因為sql語句的where條件不一定,可能多也可能少,占位符需要和參數一一對應。

MyBatis: Mybatis自動將java對象映射至sql語句。

● JDBC:對結果集解析麻煩,sql變化導致解析代碼變化,且解析前需要遍歷,如果能將數據庫記錄封裝成pojo對象解析比較方便。

MyBatis:Mybatis自動將sql執行結果映射至java對象。

到此這篇關于java關于持久層面試題目整理的文章就介紹到這了,更多相關java持久層面試題目內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Java
相關文章:
主站蜘蛛池模板: 合同书格式和范文_合同书样本模板_电子版合同,找范文吧 | 铝镁锰板厂家_进口钛锌板_铝镁锰波浪板_铝镁锰墙面板_铝镁锰屋面-杭州军晟金属建筑材料 | 氢氧化钾厂家直销批发-济南金昊化工有限公司 | 微动开关厂家-东莞市德沃电子科技有限公司 | 工业机械三维动画制作 环保设备原理三维演示动画 自动化装配产线三维动画制作公司-南京燃动数字 聚合氯化铝_喷雾聚氯化铝_聚合氯化铝铁厂家_郑州亿升化工有限公司 | 全屋整木定制-橱柜,家具定制-四川峨眉山龙马木业有限公司 | 电抗器-能曼电气-电抗器专业制造商 | 智能风向风速仪,风速告警仪,数字温湿仪,综合气象仪(气象五要素)-上海风云气象仪器有限公司 | 诚暄电子公司首页-线路板打样,pcb线路板打样加工制作厂家 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 温泉机设备|温泉小镇规划设计|碳酸泉设备 - 大连连邦温泉科技 | 自动气象站_农业气象站_超声波气象站_防爆气象站-山东万象环境科技有限公司 | 强效碱性清洗剂-实验室中性清洗剂-食品级高纯氮气发生器-上海润榕科学器材有限公司 | 正压送风机-多叶送风口-板式排烟口-德州志诺通风设备 | 破碎机锤头_耐磨锤头_合金锤头-鼎成机械一站式耐磨铸件定制服务 微型驱动系统解决方案-深圳市兆威机电股份有限公司 | 广州展台特装搭建商|特装展位设计搭建|展会特装搭建|特装展台制作设计|展览特装公司 | 聚丙烯酰胺_阴离子_阳离子「用量少」巩义亿腾厂家直销,售后无忧 聚合甘油__盐城市飞龙油脂有限公司 | 粉末冶金注射成型厂家|MIM厂家|粉末冶金齿轮|MIM零件-深圳市新泰兴精密科技 | 施工电梯_齿条货梯_烟囱电梯_物料提升机-河南大诚机械制造有限公司 | 翅片管散热器价格_钢制暖气片报价_钢制板式散热器厂家「河北冀春暖气片有限公司」 | 安全光栅|射频导纳物位开关|音叉料位计|雷达液位计|两级跑偏开关|双向拉绳开关-山东卓信机械有限公司 | 雄松华章(广州华章MBA)官网-专注MBA/MPA/MPAcc/MEM辅导培训 | 南京精锋制刀有限公司-纵剪机刀片_滚剪机刀片_合金刀片厂家 | 精密五金冲压件_深圳五金冲压厂_钣金加工厂_五金模具加工-诚瑞丰科技股份有限公司 | 比亚迪叉车-比亚迪电动叉车堆垛车托盘车仓储叉车价格多少钱报价 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | HV全空气系统_杭州暖通公司—杭州斯培尔冷暖设备有限公司 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 青岛侦探_青岛侦探事务所_青岛劝退小三_青岛婚外情取证-青岛王军侦探事务所 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 薪动-人力资源公司-灵活用工薪资代发-费用结算-残保金优化-北京秒付科技有限公司 | 亚洲工业智能制造领域专业门户网站 - 亚洲自动化与机器人网 | 共享雨伞_共享童车_共享轮椅_共享陪护床-共享产品的领先者_有伞科技 | 儋州在线-儋州招聘找工作、找房子、找对象,儋州综合生活信息门户! | 废气处理_废气处理设备_工业废气处理_江苏龙泰环保设备制造有限公司 | 闸阀_截止阀_止回阀「生产厂家」-上海卡比阀门有限公司 | 塑料造粒机「厂家直销」-莱州鑫瑞迪机械有限公司 | 反渗透阻垢剂-缓蚀阻垢剂厂家-循环水处理药剂-山东鲁东环保科技有限公司 | 打包钢带,铁皮打包带,烤蓝打包带-高密市金和金属制品厂 | 3d可视化建模_三维展示_产品3d互动数字营销_三维动画制作_3D虚拟商城 【商迪3D】三维展示服务商 广东健伦体育发展有限公司-体育工程配套及销售运动器材的体育用品服务商 | 自动化生产线-自动化装配线-直流电机自动化生产线-东莞市慧百自动化有限公司 | 芝麻黑-芝麻黑石材厂家-永峰石业|