JDBC AO春のデータを読む( Oh : POSS SLS VEL REDUZIR C DEC DIGOか?)
30376 ワード
H . An Tempos que venho querendo escrever este postMais Applamente , Desde Quando Comentei sobre o tema deste artigo numa
Bem、finalmente sau:D
いいえVは、deo、cio que o春のデータを意味します.
Isoso MeフェズLembrar como criは、vamos nossosですDAOs いいえパス.Eアコque valeは、ペナFalar umです.ディヴァルタムSE !;
Javaデータベースの接続性foo o primeiro mecanismo que conheci para conectar com um Banco de Dados e enviar Instru
マリスは、Isoをします、UMA API que NOS permiteコンコールコム・スカーカーBancoデDados、Bastando que tenhamos apenas oドライバーは、Banco EM M Are Oをします.
デモナスVantagensElaas , O Fato de Podermos usarとしてのメソクラス/インターフェースパラシュートをとってください.
Bem , Isoso N - Vo o nosso c - di dio era simples , muito menos de f la cil manuten laplement o o , como podemos ver na na classe abaixoオペラとしてのEa Representa um dao de usuは、rios、com todasとして、オペラです.
アウトローオブザーバ <武井> ポア・クァード・ホモ・オークの『カダード・ホー』についてtry-with-resources . ent o o、podeターcertezaデque o dao acima poderia ser muito maor. Penocupm n o a Preocupa Method - de - Controlar a Conex Suru O Como O Banco de Dados ( Haje , Uusos )connection pools Exce - Mesory . esとしてのnem de capturar corretamente .
sobre o dao acima ...ビエ,アコque n n o .t ' n nhamos que nos preocupar com o objeto de conex no o o o o banco , mas mais que isso : haviam tamb are m os objetos
Tamb - m m a a a a a u u d u d o d o de a query era trabalhosa、e altamente propensa a erros.o que tade acontecer quando adicionamos um parは、メトロa maisなしです
Isso SEM Contacarは、繰り返します.
Mas Eent Astro o o Veio o Hibernate , E Nossa vida Melhorou ( Bastante , eu Diria )
ディゼムque o o gavinキングは、馬鹿Pessoa muito parecida com o Linus Torwaldsエムtermosデsimpatia eカリスマです.
se issoは、verdade、nを得ます.Ma Posso Afirmar SEM Medo de Ererer que El Fai O Criador de uma das Ferramentas mais重要な点はMundo JavaをするEla foi criada em 2001 E hoe Ejamos ELA(ImplementAmtribution o o de National CIA NCIAは、春のデータUSA Hibernate Por Baixo Dos Panos)をします.
El ententu que , de certa forma , pod podエーモスfafaum um pareltos de objetos e registers em tabelas , com o conjunto de atributos de um objeto sendo compare to a uma linha de uma tabelaPode - ser - que - seja algo - meio - de bvio hoje em dia , mas n ' no o o sese se 2001 isso era t o o o claro assim ( algunde de n ' s s nem eram nascidos em 2001 : d )
Hibernate , Nisso C . digo ficaについて
OBS :パラ
パラオモス
ISSO Resolveu Boa Parte Das Nossos問題アントルータン、O Hibernate時代馬鹿soluは、oを使います.<研究ノート>『ボウス・クオ・オウトロプス』における「啓蒙論」の試みEclipseLink ).
ペーエッセE outrasrazões フォリ・クリダAエッセンシャルA .
CIAのAは、O JA、Ferramentas como o Eclipselink e o Hibernate Passaramを比較します.
Na . classe que se pretendia persifloraの挿入についてabaixo、クラス
Abaixo , Podemos ver o o mo moo dao ,作成者usando o hibernate segundo a a a a a a a a a a a a a a a exo o jpa :
O
デQualker forma、アイダtは、nhamos que lidar com馬鹿Certa QuantidadeデCデdido繰り返しです.<研究ノート>ペイ・エック・オース・デイオス・プロイナヴァーヴ・フォー・フォーア・インジェータナオ
isso nはo o oの時代um壮大な問題点(pra quem jを与えます.Maは、Veio o Pessoal da VMware dizer pra gente que dava pra fazer melhor aindaです.E、Normalmente、ELES ESTは、certosです.
春のデータ( MAIS特別号)Spring Data JPA , <論文>エボラ・トドス・ダ・ファム・ラ・リゲ・セゲエムのメソ王妃・ピオス)アルゼンチンダオパラエレFuncionar.
Veja como fica nosso dao com a利用可能な部分を表示します.
OK、TEM TambはMとしてM
パラキムエストは、安東アゴラcom Programama Solaris . o Java、SE N n o oペガーNenhum Sistema Legadoパラシュートで降下する人Dar Manontenを得ます.Talvez nは、veja o que ela trazデbom e suas vantagensを占拠します.エントは、o、se um diaのvocをemergeします.フォア・ベーム・ピアー
Pedal ter certeza que resumi bastante toda a Hist de Riahは、muitos outros detalhes que valeriamペナシタールです.Ma ProcureiフォーサーのCは、digo、e o Quanto Elフォイreduzindo com o o o o o o o o o o o o o o o o d o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
Perceberam O - Quanto - EvoluはMos - Na Escrita de nossos Daos?ATUALMENTTE , Quase Nを用いた前処理E Dos Jは、クラスqueとしてフォーラムC .
閉じるこの動画はお気に入りから削除されています.Premiaremos Um mais escrever Essa Interface ?Anotaとしてのesなしc c dio bastarは?
E vocは?アイダ・アカの『詩歌』についての一考察
アブラは、o!
Bem、finalmente sau:D
いいえVは、deo、cio que o春のデータを意味します.
Isoso MeフェズLembrar como criは、vamos nossosですDAOs いいえパス.Eアコque valeは、ペナFalar umです.ディヴァルタムSE !;
王王、時代O JDBC
Javaデータベースの接続性foo o primeiro mecanismo que conheci para conectar com um Banco de Dados e enviar Instru
insert
, select
, など).マリスは、Isoをします、UMA API que NOS permiteコンコールコム・スカーカーBancoデDados、Bastando que tenhamos apenas oドライバーは、Banco EM M Are Oをします.
デモナスVantagensElaas , O Fato de Podermos usarとしてのメソクラス/インターフェースパラシュートをとってください.
Bem , Isoso N - Vo o nosso c - di dio era simples , muito menos de f la cil manuten laplement o o , como podemos ver na na classe abaixoオペラとしてのEa Representa um dao de usuは、rios、com todasとして、オペラです.
@Repository
public class RepositorioUsuariosJdbc implements RepositorioUsuarios {
@Value("${spring.datasource.url}")
private String url;
@Value("${spring.datasource.username}")
private String usuario;
@Value("${spring.datasource.password}")
private String senha;
private Connection conexao;
@PostConstruct
void posConstrutor(){
try {
conexao = DriverManager.getConnection(url, usuario, senha);
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void save(Usuario umUsuario) {
if(!existe(umUsuario)) salvar(umUsuario);
else atualizar(umUsuario);
}
private boolean existe(Usuario umUsuario) {
return umUsuario.getId() != null;
}
private void atualizar(Usuario usuario) {
try(var statement = conexao.prepareStatement("update usuarios set nome = ? where id = ?")){
statement.setString(1, usuario.getNome());
statement.setLong(2, usuario.getId());
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public void deleteById(Long id) {
try(var statement = conexao.prepareStatement("delete from usuarios where id = ?")){
statement.setLong(1, id);
statement.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
@Override
public List<Usuario> findAll() {
var usuarios = new ArrayList<Usuario>();
try(var statement = conexao.prepareStatement("select * from usuarios");
var resultset = statement.executeQuery()){
while(resultset.next()){
var id = resultset.getLong("id");
var nome = resultset.getString("nome");
var dataNascimento = resultset.getObject("data_nascimento", LocalDate.class);
var usuario = new Usuario(nome, dataNascimento);
usuario.setId(id);
usuarios.add(usuario);
}
} catch (SQLException e) {
e.printStackTrace();
}
return usuarios;
}
@Override
public void close() {
try {
conexao.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
private boolean idEhNulo(Usuario umUsuario) {
return umUsuario.getId() == null;
}
private void salvar(Usuario usuario){
var sql = "insert into usuarios (nome, data_nascimento) values (?, ?)";
try(var statement = conexao.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)){
statement.setString(1, usuario.getNome());
statement.setObject(2, usuario.getDataNascimento());
statement.executeUpdate();
try(var ids = statement.getGeneratedKeys()){
ids.next();
usuario.setId(ids.getLong(1));
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
EscreviエステCは、dio - num pequeno projeto、クリアードapenasは、エステArtigoです.エレポールゼaqui . E、パラプロヴァールqueエッセcは、digo(e os demais que veremos a seguir)Funciona、hは、自動titito .アウトローオブザーバ
sobre o dao acima ...ビエ,アコque n n o .t ' n nhamos que nos preocupar com o objeto de conex no o o o o banco , mas mais que isso : haviam tamb are m os objetos
ResultSet
エPreparedStatement
(ou Statement
, quando est est vamosはusar o jdbcに追加します.エーモス・オスの問題点Statement
, エーモス・パラオPreparedStatement
). オズジェートスエラムCriados、E Tinham que ser Fechados quando nは、o eramマリスUSADOSです.Tamb - m m a a a a a u u d u d o d o de a query era trabalhosa、e altamente propensa a erros.o que tade acontecer quando adicionamos um parは、メトロa maisなしです
insert
cはdigo acima、porの例示を行うか.Isso SEM Contacarは、繰り返します.
Mas Eent Astro o o Veio o Hibernate , E Nossa vida Melhorou ( Bastante , eu Diria )
Tabelas e objetos s exo O(Quase)a a a a a a a a a a ma ma a Isa
ディゼムque o o gavinキングは、馬鹿Pessoa muito parecida com o Linus Torwaldsエムtermosデsimpatia eカリスマです.
se issoは、verdade、nを得ます.Ma Posso Afirmar SEM Medo de Ererer que El Fai O Criador de uma das Ferramentas mais重要な点はMundo JavaをするEla foi criada em 2001 E hoe Ejamos ELA(ImplementAmtribution o o de National CIA NCIAは、春のデータUSA Hibernate Por Baixo Dos Panos)をします.
El ententu que , de certa forma , pod podエーモスfafaum um pareltos de objetos e registers em tabelas , com o conjunto de atributos de um objeto sendo compare to a uma linha de uma tabelaPode - ser - que - seja algo - meio - de bvio hoje em dia , mas n ' no o o sese se 2001 isso era t o o o claro assim ( algunde de n ' s s nem eram nascidos em 2001 : d )
Hibernate , Nisso C . digo ficaについて
@Repository
public class RepositorioUsuariosHibernate implements RepositorioUsuarios {
@PersistenceContext
private EntityManager em;
private Session sessao;
@PostConstruct
void posConstrutor(){
sessao = em.unwrap(Session.class);
}
@Override
public void save(Usuario umUsuario) {
sessao.save(umUsuario);
}
@Override
public void deleteById(Long id) {
var usuario = sessao
.createQuery("from Usuario where id = %d".formatted(id))
.uniqueResult();
sessao.delete(usuario);
}
@Override
public List<Usuario> findAll() {
return sessao.createQuery("from Usuario").getResultList();
}
@Override
public void close() {
sessao.close();
}
}
n o o o temo mais o objetoConnection
ネムmesmo os objetosPreparedStatement
王央ResultSet
, マス・クリスマスSession
. エラ時代comoFaçade パラOバンコ.タダVez que Preisは、vamos fazer algoネール、時代sSession
.OBS :パラ
Session
, ウセイEntityManager
キューVEIO COM O JPA .ファラレソブレレエレマリスタルデ.パラオモス
Session
Hibernate、時代Necessは、rio umポーco maisデc dio digoをします.コモo Hibernateインベンザo JDBC、Tambのmプレイサバda URLデConexは、o、Usuは、リオ、Senha e o Dialeto Banco que se USariaのSisemaをします.エステSession
Configura Sexeo - Oプログラムを通してのPodia ser obtidahibernate.cfg.xml
). マナ・ボアを参照してくださいaqui .ISSO Resolveu Boa Parte Das Nossos問題アントルータン、O Hibernate時代馬鹿soluは、oを使います.<研究ノート>『ボウス・クオ・オウトロプス』における「啓蒙論」の試みEclipseLink ).
ペーエッセE outrasrazões フォリ・クリダAエッセンシャルA .
Orefica - de de diversus ferramentas de orm : Java Persistence API
CIAのAは、O JA、Ferramentas como o Eclipselink e o Hibernate Passaramを比較します.
Na . classe que se pretendia persifloraの挿入についてabaixo、クラス
Usuario
<研究ノート>@Entity
@Table(name = "usuarios")
@DynamicUpdate
@NoArgsConstructor(access = AccessLevel.PRIVATE)
@EqualsAndHashCode(of = {"nome", "dataNascimento"})
@Getter
public class Usuario {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Setter
private Long id;
private String nome;
private LocalDate dataNascimento;
public Usuario(String nome, LocalDate dataNascimento) {
this.nome = nome;
this.dataNascimento = dataNascimento;
}
public void atualizarNome(String novoNome) {
this.nome = novoNome;
}
}
OBS :エサ・クラッセエストは、sendo usada em todos os daos deste artigoです.ロゴ、ポッドヘーバーCディアーdigo necessは、rio para um dao e deswessについてリオのOUTRO(porの例示、os getters e setters sAbaixo , Podemos ver o o mo moo dao ,作成者usando o hibernate segundo a a a a a a a a a a a a a a a exo o jpa :
@Repository
class RepositorioUsuariosJpa implements RepositorioUsuarios {
@PersistenceContext
private EntityManager em;
@Override
public void save(Usuario umUsuario){
em.persist(umUsuario);
em.flush();
}
@Override
public void deleteById(Long id){
Usuario usuario = em.find(Usuario.class, id);
em.remove(usuario);
}
@Override
public List<Usuario> findAll(){
return em.createQuery("from Usuario").getResultList();
}
@Override
public void close() {
em.close();
}
}
アオウラ・ウズマス・エッセス・デ・デ・デ・デ・フエフについてEntityManager
ノールガーSession
. デFato、Olhando somente o cは、digo、PUCAコサMudouです.O
EntityManager
NOS Ajudou AライダのCOM Aは、nnciaデforma padronizada、pois veio com a especifica傷のo jpaを主張します.パラ・マリス・デルーフaqui .デQualker forma、アイダtは、nhamos que lidar com馬鹿Certa QuantidadeデCデdido繰り返しです.<研究ノート>ペイ・エック・オース・デイオス・プロイナヴァーヴ・フォー・フォーア・インジェータナオ
EntityManager
, E - Manpuulは-ローem todos OSのdaos.isso nはo o oの時代um壮大な問題点(pra quem jを与えます.Maは、Veio o Pessoal da VMware dizer pra gente que dava pra fazer melhor aindaです.E、Normalmente、ELES ESTは、certosです.
Estado da Arte -スプリングデータ
春のデータ( MAIS特別号)Spring Data JPA , <論文>エボラ・トドス・ダ・ファム・ラ・リゲ・セゲエムのメソ王妃・ピオス)アルゼンチンダオパラエレFuncionar.
Veja como fica nosso dao com a利用可能な部分を表示します.
@Repository
public interface RepositorioUsuariosSpringDataJpa extends JpaRepository<Usuario, Long> {
}
アペナス・オーマ・インターフェースframework
シュプリントテ.ナダ・マリス!OK、TEM TambはMとしてM
Usuario
, MAS vocは、ententuを使います.パラキムエストは、安東アゴラcom Programama Solaris . o Java、SE N n o oペガーNenhum Sistema Legadoパラシュートで降下する人Dar Manontenを得ます.Talvez nは、veja o que ela trazデbom e suas vantagensを占拠します.エントは、o、se um diaのvocをemergeします.フォア・ベーム・ピアー
Pedal ter certeza que resumi bastante toda a Hist de Riahは、muitos outros detalhes que valeriamペナシタールです.Ma ProcureiフォーサーのCは、digo、e o Quanto Elフォイreduzindo com o o o o o o o o o o o o o o o o d o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o o
Perceberam O - Quanto - EvoluはMos - Na Escrita de nossos Daos?ATUALMENTTE , Quase Nを用いた前処理E Dos Jは、クラスqueとしてフォーラムC .
閉じるこの動画はお気に入りから削除されています.Premiaremos Um mais escrever Essa Interface ?Anotaとしてのesなしc c dio bastarは?
E vocは?アイダ・アカの『詩歌』についての一考察
アブラは、o!
Reference
この問題について(JDBC AO春のデータを読む( Oh : POSS SLS VEL REDUZIR C DEC DIGOか?)), 我々は、より多くの情報をここで見つけました https://dev.to/rodrigovp/do-jdbc-ao-spring-data-ou-e-possivel-reduzir-codigo-361fテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol