{eval=Array;=+count(Array);}
一個非常好的問題。在Java + Spring Boot主流開發搭配中,通常使用數據庫持久層框架,采用ORM架構,映射實體和數據庫,對JDBC進行封裝,支持定制化SQL、存儲過程以及高級映射,使得開發者只需關注SQL語句和CRUD操作,而不需要處理驅動加載、創建和管理連接等復雜的過程。
常用的持久化實現方案有多種選擇,其中MyBatis和Hibernate都是比較受歡迎的框架。
還有一個不得不提的國內開發者共享的開源框架MyBatis Plus,對MyBatis做了進一步增強、簡化開發和提高效率,并且提供了簡單易用的代碼生成器。
開發時不需關注數據庫本身,只需通過三步:Spring Boot集成MyBatis和MyBatis Plus,配置代碼生成器,調用Service開發CRUD功能。
我是工作多年的Web應用架構師,陸續寫一些關于軟件開發方面的文章,歡迎關注我,了解更多IT專業知識。
你好,我真心看上了這個問題。先回答一下:所有的數據庫中調用最簡單的是Spring Data JPA,沒有之一。
再搭配基于Java編寫的內存型數據庫H2,加上依賴即可使用,不用裝數據庫就可以寫樣例。
因為不用安裝,拿來即用。是寫Demo的利器。支持SQL92標準。滿足樣例類型的數據庫操作。
因為調用簡單,拿來就用。現在非常受國內外新項目的青睞。
1.加入依賴
com.h2database:h2
org.springframework.boot:spring-boot-starter-data-jpa
2. 定義實體
@Data @Entity @AllArgsConstructor @NoArgsConstructor
public class User implements Serializable {
@Id @GeneratedValue
private Integer id;
private String name;
}
3.定義接口
public interface UserRepository extends JpaRepository<User, Integer> {}
4.直接使用
沒有復雜代碼,沒有魔法值。方便重構復用。
我最近剛好在做一期JPA + H2數據庫的視頻教程。
在Java世界中,網上有大量的教程事例,但是所有的demo基本上都是基于MySQL數據庫實現的。這對于新手會造成一個困擾,一樣技術還沒學會就要學另一樣。現在的軟件開發環境下,即便你對數據庫一無所知你依然可以開發出非常優秀的產品。這就是我最近在做的視頻教程的真正原因。
這里涉及到兩個概念:領域驅動設計(DDD)、面向數據庫編程
這兩塊內容都很很大,得安排兩期才能說完。今天只說 “對于Java開發Demo來說” 數據庫選型不是那么重要。
先別抬杠,有一說一。正常情況下,在java開發過程中,我們基于業務來完成所有的邏輯編碼,不應該是基于數據庫的。這也是中外開發者不同的認識,導致的編程方式的不同。編程一定是面向接口的。從spring的源碼中,我們可以發現大量代碼踐行這一點。這也是spring data JPA的優勢。
這里還是要強調一點,到目前為止,我們談論的是開發Demo演示環境過程中的數據庫。如果是用于生產的,且不是嵌入式的設備,那么還是需要慎重考慮是否使用H2的。
他的小,注定了完備性不是那么強。不能兼容較新版本的SQL標準。
如果喜歡,點個關注,我會加快進度。
很高興能夠看到和回答這個問題,作為一個科技愛好者,我每天都在關注科技發展方面的消息,每天收獲也蠻多的。
首先,我覺得這是一個非常好的問題,也是很多小白用戶困惑之處,下面我將根據自己的經驗認真回答這個問題。
當前,主要的Java開發人員通常需要主數據庫。開發人員應注意三個常見功能:Mysql,Oracle,SqlServer。在數據量相對較高或查詢數量相對較高的情況下,有必要獲取有關某些特定數據庫的最佳定位的信息。與SQL相關的概念,例如簡介表,字段,記錄,索引等。
JDBC是一種可用于執行SQL語句的Java APlI(Application Programming Interface應用程序設計接口)是Java和數據庫之間的標準接口。
通過使用JDBC,開發人員可以很方便地將SQL語句傳送給幾乎任何一種數據庫。也就是說,開發人員可以不必寫一個程序訪問Sybase,寫另一個程序訪問Oracle,再寫一個程序訪問Microsoft的SQLServer。
當應用程序被移植到不同的平臺或數據庫系統,應用程序不變,改變的是驅動程序,驅動程序扮演了多層數據庫設計中的中間層(或中間件)的角色。一個數據庫由一個或多個表組成,每個表由行,列組成,列代表字段(即屬性),行代表記錄。
大型數據庫:Oracle,DB2,Sysbase中型數據庫:SQL Server,My SQL,Informix小型數據庫:Access,Visual Foxpro
3、對關系數據庫的操作有哪些?
搜索(查找),添加,插入,刪除,更新記錄。
以上便是我的一些見解和回答,可能不能如您所愿,但我真心希望能夠對您有所幫助!不清楚的地方您還可以關注我的頭條號“每日精彩科技”我將竭盡所知幫助您!
碼字不易,感覺寫的還行的話,還請點個贊哦!
Java在多年的發展歷程中,已證明自己是為軟件開發而生的頂級通用編程語言。Java 廣泛用于科學和教育,金融,法律和政府等許多行業。Java 是開源和面向對象的,其開發目的是使應用程序開發人員可以編寫一次然后在任何地方運行。編譯后的 Java 代碼可以在支持 Java 的各個平臺上運行。
2020 年的頂級 Java 框架。
1、Spring
2、Hibernate
3、Struts
4、Play
5、Google Web 工具包
6、Grails
7、Blade
8、JavaServer Faces
9、Vaadin
在許多情況下,使用SQL數據庫存儲/檢索數據都是很好的選擇。而現如今的很多情況下,它都不再能滿足我們的目的,這一切都取決于用例的變化。
現在來討論一些不同的非SQL存儲/處理數據工具,例如,NoSQL數據庫,全文搜索引擎,實時流式處理,圖形數據庫等。
1、MongoDB——最受歡迎的,跨平臺的,面向文檔的數據庫。
MongoDB是一個基于分布式文件存儲的數據庫,使用C++語言編寫。旨在為Web應用提供可擴展的高性能數據存儲解決方案。應用性能高低依賴于數據庫性能,MongoDB則是非關系數據庫中功能最豐富,最像關系數據庫的,隨著MongDB 3.4版本發布,其應用場景適用能力得到了進一步拓展。
MongoDB的核心優勢就是靈活的文檔模型、高可用復制集、可擴展分片集群。你可以試著從幾大方面了解MongoDB,如實時監控MongoDB工具、內存使用量和頁面錯誤、連接數、數據庫操作、復制集等。
2、Elasticsearch ——為云構建的分布式RESTful搜索引擎。
ElasticSearch是基于Lucene的搜索服務器。它提供了分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發的,并作為Apache許可條款下的開放源碼發布,是比較流行的企業級搜索引擎。
ElasticSearch不僅是一個全文本搜索引擎,還是一個分布式實時文檔存儲,其中每個field均是被索引的數據且可被搜索;也是一個帶實時分析功能的分布式搜索引擎,并且能夠擴展至數以百計的服務器存儲及處理PB級的數據。ElasticSearch在底層利用Lucene完成其索引功能,因此其許多基本概念源于Lucene。
3、Cassandra——開源分布式數據庫管理系統。
最初是由Facebook開發的,旨在處理許多商品服務器上的大量數據,提供高可用性,沒有單點故障。
Apache Cassandra是一套開源分布式NoSQL數據庫系統。集Google BigTable的數據模型與Amazon Dynamo的完全分布式架構于一身。于2008開源,此后,由于Cassandra良好的可擴展性,被Digg、Twitter等Web 2.0網站所采納,成為了一種流行的分布式結構化數據存儲方案。
因Cassandra是用Java編寫的,所以理論上在具有JDK6及以上版本的機器中都可以運行,官方測試的JDK還有OpenJDK 及Sun的JDK。 Cassandra的操作命令,類似于我們平時操作的關系數據庫,對于熟悉MySQL的朋友來說,操作會很容易上手。
4、Redis ——開源(BSD許可)內存數據結構存儲,用作數據庫,緩存和消息代理。
Redis是一個開源的使用ANSI C語言編寫的、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。Redis 有三個主要使其有別于其它很多競爭對手的特點:Redis是完全在內存中保存數據的數據庫,使用磁盤只是為了持久性目的; Redis相比許多鍵值數據存儲系統有相對豐富的數據類型; Redis可以將數據復制到任意數。
5、Hazelcast ——基于Java的開源內存數據網格。
Hazelcast 是一種內存數據網格 in-memory data grid,提供Java程序員關鍵任務交易和萬億級內存應用。雖然Hazelcast沒有所謂的“Master”,但是仍然有一個Leader節點(the oldest member),這個概念與ZooKeeper中的Leader類似,但是實現原理卻完全不同。同時,Hazelcast中的數據是分布式的,每一個member持有部分數據和相應的backup數據,這點也與ZooKeeper不同。
Hazelcast的應用便捷性深受開發者喜歡,但如果要投入使用,還需要慎重考慮。
6、Ehcache——廣泛使用的開源Java分布式緩存。
主要面向通用緩存、Java EE和輕量級容器。
EhCache 是一個純Java的進程內緩存框架,具有快速、精干等特點,是hibernate中默認的CacheProvider。主要特性有:快速簡單,具有多種緩存策略;緩存數據有兩級,內存和磁盤,因此無需擔心容量問題;緩存數據會在虛擬機重啟的過程中寫入磁盤;可以通過RMI、可插入API等方式進行分布式緩存;具有緩存和緩存管理器的偵聽接口;支持多緩存管理器實例,以及一個實例的多個緩存區域;提供Hibernate的緩存實現。
7、Hadoop ——用Java編寫的開源軟件框架。
用于分布式存儲,并對非常大的數據用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群進行高速運算和存儲。Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,MapReduce則為海量的數據提供了計算。
8、Solr ——開源企業搜索平臺,用Java編寫,來自Apache Lucene項目。
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似于Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結果。
與ElasticSearch一樣,同樣是基于Lucene,但它對其進行了擴展,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展并對查詢性能進行了優化。
9、Spark ——Apache Software Foundation中最活躍的項目,是一個開源集群計算框架。
Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。
Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地
10、Memcached ——通用分布式內存緩存系統。
Memcached是一套分布式快取系統,當初是Danga Interactive為了LiveJournal所發展的,但被許多軟件(如MediaWiki)所使用。Memcached作為高速運行的分布式緩存服務器,具有以下的特點:協議簡單,基于libevent的事件處理,內置內存存儲方式。
Java在多年的發展歷程中,已證明自己是為軟件開發而生的頂級通用編程語言。Java 廣泛用于科學和教育,金融,法律和政府等許多行業。Java 是開源和面向對象的,其開發目的是使應用程序開發人員可以編寫一次然后在任何地方運行。編譯后的 Java 代碼可以在支持 Java 的各個平臺上運行。
2020 年的頂級 Java 框架。
1、Spring
2、Hibernate
3、Struts
4、Play
5、Google Web 工具包
6、Grails
7、Blade
8、JavaServer Faces
9、Vaadin
在許多情況下,使用SQL數據庫存儲/檢索數據都是很好的選擇。而現如今的很多情況下,它都不再能滿足我們的目的,這一切都取決于用例的變化。
現在來討論一些不同的非SQL存儲/處理數據工具,例如,NoSQL數據庫,全文搜索引擎,實時流式處理,圖形數據庫等。
1、MongoDB——最受歡迎的,跨平臺的,面向文檔的數據庫。
MongoDB是一個基于分布式文件存儲的數據庫,使用C++語言編寫。旨在為Web應用提供可擴展的高性能數據存儲解決方案。應用性能高低依賴于數據庫性能,MongoDB則是非關系數據庫中功能最豐富,最像關系數據庫的,隨著MongDB 3.4版本發布,其應用場景適用能力得到了進一步拓展。
MongoDB的核心優勢就是靈活的文檔模型、高可用復制集、可擴展分片集群。你可以試著從幾大方面了解MongoDB,如實時監控MongoDB工具、內存使用量和頁面錯誤、連接數、數據庫操作、復制集等。
2、Elasticsearch ——為云構建的分布式RESTful搜索引擎。
ElasticSearch是基于Lucene的搜索服務器。它提供了分布式多用戶能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java開發的,并作為Apache許可條款下的開放源碼發布,是比較流行的企業級搜索引擎。
ElasticSearch不僅是一個全文本搜索引擎,還是一個分布式實時文檔存儲,其中每個field均是被索引的數據且可被搜索;也是一個帶實時分析功能的分布式搜索引擎,并且能夠擴展至數以百計的服務器存儲及處理PB級的數據。ElasticSearch在底層利用Lucene完成其索引功能,因此其許多基本概念源于Lucene。
3、Cassandra——開源分布式數據庫管理系統。
最初是由Facebook開發的,旨在處理許多商品服務器上的大量數據,提供高可用性,沒有單點故障。
Apache Cassandra是一套開源分布式NoSQL數據庫系統。集Google BigTable的數據模型與Amazon Dynamo的完全分布式架構于一身。于2008開源,此后,由于Cassandra良好的可擴展性,被Digg、Twitter等Web 2.0網站所采納,成為了一種流行的分布式結構化數據存儲方案。
因Cassandra是用Java編寫的,所以理論上在具有JDK6及以上版本的機器中都可以運行,官方測試的JDK還有OpenJDK 及Sun的JDK。 Cassandra的操作命令,類似于我們平時操作的關系數據庫,對于熟悉MySQL的朋友來說,操作會很容易上手。
4、Redis ——開源(BSD許可)內存數據結構存儲,用作數據庫,緩存和消息代理。
Redis是一個開源的使用ANSI C語言編寫的、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。Redis 有三個主要使其有別于其它很多競爭對手的特點:Redis是完全在內存中保存數據的數據庫,使用磁盤只是為了持久性目的; Redis相比許多鍵值數據存儲系統有相對豐富的數據類型; Redis可以將數據復制到任意數。
5、Hazelcast ——基于Java的開源內存數據網格。
Hazelcast 是一種內存數據網格 in-memory data grid,提供Java程序員關鍵任務交易和萬億級內存應用。雖然Hazelcast沒有所謂的“Master”,但是仍然有一個Leader節點(the oldest member),這個概念與ZooKeeper中的Leader類似,但是實現原理卻完全不同。同時,Hazelcast中的數據是分布式的,每一個member持有部分數據和相應的backup數據,這點也與ZooKeeper不同。
Hazelcast的應用便捷性深受開發者喜歡,但如果要投入使用,還需要慎重考慮。
6、Ehcache——廣泛使用的開源Java分布式緩存。
主要面向通用緩存、Java EE和輕量級容器。
EhCache 是一個純Java的進程內緩存框架,具有快速、精干等特點,是hibernate中默認的CacheProvider。主要特性有:快速簡單,具有多種緩存策略;緩存數據有兩級,內存和磁盤,因此無需擔心容量問題;緩存數據會在虛擬機重啟的過程中寫入磁盤;可以通過RMI、可插入API等方式進行分布式緩存;具有緩存和緩存管理器的偵聽接口;支持多緩存管理器實例,以及一個實例的多個緩存區域;提供Hibernate的緩存實現。
7、Hadoop ——用Java編寫的開源軟件框架。
用于分布式存儲,并對非常大的數據用戶可以在不了解分布式底層細節的情況下,開發分布式程序。充分利用集群進行高速運算和存儲。Hadoop實現了一個分布式文件系統(Hadoop Distributed File System),簡稱HDFS。Hadoop的框架最核心的設計就是:HDFS和MapReduce。HDFS為海量的數據提供了存儲,MapReduce則為海量的數據提供了計算。
8、Solr ——開源企業搜索平臺,用Java編寫,來自Apache Lucene項目。
Solr是一個獨立的企業級搜索應用服務器,它對外提供類似于Web-service的API接口。用戶可以通過http請求,向搜索引擎服務器提交一定格式的XML文件,生成索引;也可以通過Http Get操作提出查找請求,并得到XML格式的返回結果。
與ElasticSearch一樣,同樣是基于Lucene,但它對其進行了擴展,提供了比Lucene更為豐富的查詢語言,同時實現了可配置、可擴展并對查詢性能進行了優化。
9、Spark ——Apache Software Foundation中最活躍的項目,是一個開源集群計算框架。
Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供交互式查詢外,它還可以優化迭代工作負載。
Spark 是在 Scala 語言中實現的,它將 Scala 用作其應用程序框架。與 Hadoop 不同,Spark 和 Scala 能夠緊密集成,其中的 Scala 可以像操作本地集合對象一樣輕松地
10、Memcached ——通用分布式內存緩存系統。
Memcached是一套分布式快取系統,當初是Danga Interactive為了LiveJournal所發展的,但被許多軟件(如MediaWiki)所使用。Memcached作為高速運行的分布式緩存服務器,具有以下的特點:協議簡單,基于libevent的事件處理,內置內存存儲方式。
以上我的回答希望對你有所幫助
0
回答10
回答4
回答0
回答4
回答3
回答7
回答0
回答0
回答10
回答