数据持久化编程学习总结
一、JDBC编程 1. 使用JDBC规范 在数据库编程方面,最先使用的数据持久化技术无疑是JDBC 可以说JDBC(Java Data Base Connectivity)是学习其它数据持久化技术的基础 Java中访问数据库使用的就是JDBC,基本操作有CRUD(Create-Read-Update-Delete) JDBC定义
一、JDBC编程
1. 使用JDBC规范
在数据库编程方面,最先使用的数据持久化技术无疑是JDBC
可以说JDBC(Java Data Base Connectivity)是学习其它数据持久化技术的基础
Java中访问数据库使用的就是JDBC,基本操作有CRUD(Create-Read-Update-Delete)
JDBC定义了数据库的连接,SQL语句的执行以及查询结果集的遍历,一般操作步骤如下:
1. 注册驱动:DriverManager.registerDriver(driver);
2. 建立连接:Connection conn = DriverManager.getConnection(url, "username","password");
3. 获取对象:Statement stmt = conn.createStatement();
4. 执行查询:ResultSet rs = stmt.executeQuery(sqlstring);
5. 处理结果:while (rs.next()){doing something about the result}
6. 释放连接:rs.close(); stmt.close();conn.close();
总结:在初学阶段,无疑是必须学会使用原生态的JDBC进行数据库编程
优点:JDBC为数据库编程提供了可能,规范了数据库的连接和操作方式
缺点:JDBC API和SQL语句与Servlet和JSP夹杂在一起
每次进行数据库操作都要进行对象的创建与销毁
二、JDBC高级应用
1. 使用DAO模式
大量进行JDBC编程后,就积累了不少经验和发现不少缺点,于是对JDBC进行分层和模块化
而DAO(Data Access Object)和POJO(Plain Old Java Object)则是JDBC下常用的模式
在DAO模式出现之前,操作数据库的代码与业务代码均出现在Servlet或者JSP中
SQL语句、Java语句和Html语句夹杂在一起了,导致开发效率很底下
而使用了DAO模式后,所有的JDBC API和SQL语句均移到了DAO层
实现分层后Servlet、JSP只与Java Bean、DAO层交互,而不会有JDBC API和SQL语句
这无疑增加了程序的清晰性、可读性,而且其可重用性比较好
2. 使用DBCP
在JDBC编程中,每一次的数据操作,都要创建并销毁conn对象、stmt对象和rs对象
繁琐的创建和销毁这些对象无疑会消耗一定的时间和IO资源,在并发访问时尤其明显
使用数据源DBCP(DataBase connection pool)技术可以解决这一问题
数据源一般配置在xml文件中,使用数据源会自动进行优化和管理,一般配置如下:
<property name="driverClassName" value="driverClassName"></property> <property name="url" value="jdbc url"></property> <property name="username" value="username"></property> <property name="password" value="password"></property>
总结:DAO模式解决了JDBC API和SQL语句与JSP的夹杂问题并实现了分层
DBCP则为繁琐的创建和销毁对象提供了解决方法
三、使用ORM框架Hibernate进行数据库编程
1. ORM框架的基本原理
DAO模式无非就是手动将POJO拆分并拼装成SQL语句和将SQL查询结果拼装回POJO
在使用了JDBC高级技术和DAO模式进行编程后,仍然需要编写大量的SQL语句
而ORM通过xml配置文件或使用Java注解的方式把Java对象映射到数据库上
这样ORM(Object-Relative Database-Mapping)框架就能自动生成SQL语句
2. 使用ORM框架Hibernate进行数据库编程
Hibernete是ORM框架的一种,同样能够自动生成SQL语句
在DAO模式中,一个简单的Person POJO如下(省略getter和setter方法):
public class Person { private Integer id; private String name; }
对应于数据库的表person
create table if not exists person ( id int primary key auto_increment, name varchar(20) not null, );
使用Java注解后Person POJO实体类能映射到数据库上,并能自动生成SQL语句
代码如下(省略getter和setter方法):
@Entity @Table(name = "person") public class Person{ @Id @GeneratedValue(strategy= IDENTITY) private Integer id; @Column(name = "name") private String name; }
Hibernate使用Session和HQL语句进行数据库的相关操作,如查询数据的操作如下:
Session session =HibernateSessionFactory.getSessionFactory().openSession(); String queryString = "select p.id,p.name from Person p"; //查询并输出所有的记录 List<Object[]> personList =session.createQuery(queryString).list(); for(Object[] row : personList){ for(Object obj : row) System.out.print(" " + obj); System.out.println(); } session.close();
总结:ORM这类的框架解决了DAO层需要编写大量的SQL语句的问题
Hibernate使用HQL解决了数据库的移植问题
优点:无需再编写大量的SQL语句并解决了数据库移植问题
缺点:在数据库事务操作上然后要编写较多的代码
四、使用JPA规范进行数据库编程
1. 使用JPA规范
由于人们使用各种不同的数据库如Oracle、DB2、MySQL和SQL Server等进行数据存储
所以进行数据库连接的方式必然多种多样,而JDBC则规范了数据库的连接方式
同样的道理,各种ORM框架的出现必然会使开发和维护的难度升级
所以Java官方又推出了JPA规范,旨在规范各种ORM框架,使其有统一的接口和方法
使用JPA规范进行数据库编程只需指定一种ORM框架作为底层的实现,如Hibernate
如果需要更换其它的ORM框架则只需在配置文件中修改,类似于更换其它的数据库
而JPA规范则使用EntityManager进行相关的数据库操作,如查找操作如下:
public boolean findPersonByName(String name) { EntityManagerFactory emf = Persistence.createEntityManagerFactory("persistence-unitname"); EntityManager em = emf.createEntityManager(); Person person = em. findPersonByName(name); if (a == null) return false; return true; }
总结:JPA需要指定一种ORM框架作为底层的实现
JPA也是使用Java注解配置POJO,使用EntityManager进行相关的数据库操作
优点:JPA规范旨在规范各种ORM框架,使其有统一的接口和方法
缺点:仍然需要对事务管理进行编程
五、使用SpringDAO进行数据库编程
SpringDAO对JDBC进行了封装,结合DAO模式进行使用
SpringDAO规范使用JDBCTemplate进行相关的数据库操作,如查找操作如下:
public int getPersonCount(){ String sql = "select count(*) from person"; return getJdbcTemplate().queryForInt(sql); }
总结:SpringDAO对JDBC进行了封装,隐藏了JDBC API,只需使用getJdbcTemplate()方法
类似于使用DAO模式,只是封装了JDBC和提供了事务管理
优点:能够通过使用Spring进行事务管理
隐藏和封装了JDBCAPI
缺点: 类似于使用DAO模式,仍然需要编写和使用大量的SQL语句
六、使用SpringORM进行数据库编程
SpringORM就是为了解决SpringDAO的缺点,让其完善起来
这样一来,SpringORM就有了所有的优点,包括能够使用DAO模式进行分层
能够使用ORM框架解决编写大量的SQL语句的问题
隐藏和封装了JDBC API,只需使用getHibernateTemplate()方法
能够使用HQL解决数据库的移植问题,并且通过使用Spring进行事务管理
总结:使用SpringORM进行数据持久化编程是相对比较理想的
补充:使用SSH框架进行Java Web编程能够做到合理分层
能将业务逻辑、数据持久化和表现逻辑明确分开,思路清晰
表现逻辑层中的Struts2是MVC框架,能够进行页面导航和实现视图显示
在结构上表现为使用action进行页面导航,使用JSP作为视图界面
数据持久层中的Hibernate则是持久化ORM框架,能够自动生成SQL语句
在结构上表现为使用DAO和POJO(domain)实现数据持久化
业务逻辑层的Spring则能使用简单的封装好的JDBC进行CRUD和事务管理
在结构上表现为使用service进行业务管理

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Stehen Sie vor einer Verzögerung oder einer langsamen mobilen Datenverbindung auf dem iPhone? Normalerweise hängt die Stärke des Mobilfunk-Internets auf Ihrem Telefon von mehreren Faktoren ab, wie z. B. der Region, dem Mobilfunknetztyp, dem Roaming-Typ usw. Es gibt einige Dinge, die Sie tun können, um eine schnellere und zuverlässigere Mobilfunk-Internetverbindung zu erhalten. Fix 1 – Neustart des iPhone erzwingen Manchmal werden durch einen erzwungenen Neustart Ihres Geräts viele Dinge zurückgesetzt, einschließlich der Mobilfunkverbindung. Schritt 1 – Drücken Sie einfach einmal die Lauter-Taste und lassen Sie sie los. Drücken Sie anschließend die Leiser-Taste und lassen Sie sie wieder los. Schritt 2 – Der nächste Teil des Prozesses besteht darin, die Taste auf der rechten Seite gedrückt zu halten. Lassen Sie das iPhone den Neustart abschließen. Aktivieren Sie Mobilfunkdaten und überprüfen Sie die Netzwerkgeschwindigkeit. Überprüfen Sie es erneut. Fix 2 – Datenmodus ändern 5G bietet zwar bessere Netzwerkgeschwindigkeiten, funktioniert jedoch besser, wenn das Signal schwächer ist

Ich weine zu Tode. Die Daten im Internet reichen überhaupt nicht aus. Das Trainingsmodell sieht aus wie „Die Tribute von Panem“, und KI-Forscher auf der ganzen Welt machen sich Gedanken darüber, wie sie diese datenhungrigen Esser ernähren sollen. Dieses Problem tritt insbesondere bei multimodalen Aufgaben auf. Zu einer Zeit, als sie ratlos waren, nutzte ein Start-up-Team der Abteilung der Renmin-Universität von China sein eigenes neues Modell, um als erstes in China einen „modellgenerierten Datenfeed selbst“ in die Realität umzusetzen. Darüber hinaus handelt es sich um einen zweigleisigen Ansatz auf der Verständnisseite und der Generierungsseite. Beide Seiten können hochwertige, multimodale neue Daten generieren und Datenrückmeldungen an das Modell selbst liefern. Was ist ein Modell? Awaker 1.0, ein großes multimodales Modell, das gerade im Zhongguancun-Forum erschienen ist. Wer ist das Team? Sophon-Motor. Gegründet von Gao Yizhao, einem Doktoranden an der Hillhouse School of Artificial Intelligence der Renmin University.

Das neueste Video von Teslas Roboter Optimus ist veröffentlicht und er kann bereits in der Fabrik arbeiten. Bei normaler Geschwindigkeit sortiert es Batterien (Teslas 4680-Batterien) so: Der Beamte hat auch veröffentlicht, wie es bei 20-facher Geschwindigkeit aussieht – auf einer kleinen „Workstation“, pflücken und pflücken und pflücken: Dieses Mal wird es freigegeben. Eines der Highlights Der Vorteil des Videos besteht darin, dass Optimus diese Arbeit in der Fabrik völlig autonom und ohne menschliches Eingreifen während des gesamten Prozesses erledigt. Und aus Sicht von Optimus kann es auch die krumme Batterie aufnehmen und platzieren, wobei der Schwerpunkt auf der automatischen Fehlerkorrektur liegt: In Bezug auf die Hand von Optimus gab der NVIDIA-Wissenschaftler Jim Fan eine hohe Bewertung ab: Die Hand von Optimus ist der fünffingrige Roboter der Welt am geschicktesten. Seine Hände sind nicht nur taktil

Kürzlich wurde die Militärwelt von der Nachricht überwältigt: US-Militärkampfflugzeuge können jetzt mithilfe von KI vollautomatische Luftkämpfe absolvieren. Ja, erst kürzlich wurde der KI-Kampfjet des US-Militärs zum ersten Mal der Öffentlichkeit zugänglich gemacht und sein Geheimnis gelüftet. Der vollständige Name dieses Jägers lautet „Variable Stability Simulator Test Aircraft“ (VISTA). Er wurde vom Minister der US-Luftwaffe persönlich geflogen, um einen Eins-gegen-eins-Luftkampf zu simulieren. Am 2. Mai startete US-Luftwaffenminister Frank Kendall mit einer X-62AVISTA auf der Edwards Air Force Base. Beachten Sie, dass während des einstündigen Fluges alle Flugaktionen autonom von der KI durchgeführt wurden! Kendall sagte: „In den letzten Jahrzehnten haben wir über das unbegrenzte Potenzial des autonomen Luft-Luft-Kampfes nachgedacht, aber es schien immer unerreichbar.“ Nun jedoch,

FP8 und die geringere Gleitkomma-Quantifizierungsgenauigkeit sind nicht länger das „Patent“ von H100! Lao Huang wollte, dass jeder INT8/INT4 nutzt, und das Microsoft DeepSpeed-Team begann, FP6 auf A100 ohne offizielle Unterstützung von NVIDIA auszuführen. Testergebnisse zeigen, dass die FP6-Quantisierung der neuen Methode TC-FPx auf A100 nahe an INT4 liegt oder gelegentlich schneller als diese ist und eine höhere Genauigkeit aufweist als letztere. Darüber hinaus gibt es eine durchgängige Unterstützung großer Modelle, die als Open-Source-Lösung bereitgestellt und in Deep-Learning-Inferenz-Frameworks wie DeepSpeed integriert wurde. Dieses Ergebnis wirkt sich auch unmittelbar auf die Beschleunigung großer Modelle aus – in diesem Rahmen ist der Durchsatz bei Verwendung einer einzelnen Karte zum Ausführen von Llama 2,65-mal höher als der von Doppelkarten. eins

Letzte Woche wurde OpenAI inmitten der Welle interner Kündigungen und externer Kritik von internen und externen Problemen geplagt: - Der Verstoß gegen die Schwester der Witwe löste weltweit hitzige Diskussionen aus - Mitarbeiter, die „Overlord-Klauseln“ unterzeichneten, wurden einer nach dem anderen entlarvt – Internetnutzer listeten Ultramans „ Sieben Todsünden“ – Gerüchtebekämpfung: Laut durchgesickerten Informationen und Dokumenten, die Vox erhalten hat, war sich die leitende Führung von OpenAI, darunter Altman, dieser Eigenkapitalrückgewinnungsbestimmungen wohl bewusst und hat ihnen zugestimmt. Darüber hinaus steht OpenAI vor einem ernsten und dringenden Problem – der KI-Sicherheit. Die jüngsten Abgänge von fünf sicherheitsrelevanten Mitarbeitern, darunter zwei der prominentesten Mitarbeiter, und die Auflösung des „Super Alignment“-Teams haben die Sicherheitsprobleme von OpenAI erneut ins Rampenlicht gerückt. Das Fortune-Magazin berichtete, dass OpenA

Llama3, der majestätische König von Open Source, das ursprüngliche Kontextfenster ist nur ... 8k groß, was mich die Worte „es riecht so gut“ herunterschlucken lässt. Ist heute, wo 32.000 der Ausgangspunkt und 100.000 üblich sind, die Absicht, Raum für Beiträge zur Open-Source-Community zu lassen? Die Open-Source-Community hat sich diese Gelegenheit sicherlich nicht entgehen lassen: Jetzt kann jede fein abgestimmte Version von Llama370b mit nur 58 Codezeilen automatisch auf 1048.000 (eine Million) Kontexte skaliert werden. Hinter den Kulissen verbirgt sich eine LoRA, die aus einer fein abgestimmten Version von Llama370BInstruct extrahiert wurde, die einen guten Kontext erweitert, und die Datei ist nur 800 MB groß. Anschließend können Sie Mergekit verwenden, um es mit anderen Modellen derselben Architektur auszuführen oder es direkt mit dem Modell zusammenzuführen. 1048k-Kontext verwendet

BitgetLaunchpool ist eine dynamische Plattform, die für alle Kryptowährungsbegeisterten entwickelt wurde. BitgetLaunchpool zeichnet sich durch sein einzigartiges Angebot aus. Hier können Sie Ihre Token einsetzen, um weitere Belohnungen freizuschalten, darunter Airdrops, hohe Renditen und einen großzügigen Preispool, der nur frühen Teilnehmern vorbehalten ist. Was ist BitgetLaunchpool? BitgetLaunchpool ist eine Kryptowährungsplattform, auf der Token zu benutzerfreundlichen Bedingungen eingesetzt und verdient werden können. Durch die Investition von BGB oder anderen Token in Launchpool haben Benutzer die Möglichkeit, kostenlose Airdrops und Einnahmen zu erhalten und an großzügigen Bonuspools teilzunehmen. Die Einnahmen aus verpfändeten Vermögenswerten werden innerhalb von T+1 Stunden berechnet und die Belohnungen basieren darauf
