Hoje aprendi a adicionar, excluir, modificar e verificar o banco de dados através do Hibernate. Deixe -me apresentar brevemente:
Primeiro, crie uma aula de estudante:
pacote com.hibernate.model; importar javax.persistence.column; import javax.persistence.entity; importar javax.persistence.GeneratedValue; importar javax.persistence.id; private; private; Birthplace; @id @generatedValue @column (name = "_id") public int getId () {return id;} public void SetId (int id) {this.id = id;}@colun (names_ "_name") public string () {return name;} public »SetName (string" {) {) getAge () {Age de retorno;} public void setage (int Age) {this.age = Age;}@column (name = "_birthplace") public string getBirthplace () {return birthplace;} public void Setbirthplace (String Birthplace) {this.birthplace = Birthlow;}}} Em seguida, crie um caso de teste mais professor do tipo Junit:
Vamos falar sobre o método session.save () primeiro, ou seja, add:
pacote com.hibernate.model; importar org.hibernate.Query; importar org.hibernate.session; importar org.hibernate.sessionFactory; importar org.hibernate.cfg.annoTationConfiguration; importar org.junit.afterlat; importit.junit.beretclass; importar; sf = null; @beforeClass public static void beFeClass () {try {sf = new AnoTationConfiguration (). Configure (). BuildSessionFactory (); // é melhor obter a exceção aqui, porque há um bug que às vezes aparece e não aparece}} (E.) {E. testSave () {// Aumentar o professor t = novo professor (); t.setage (23); t.setName ("moluo"); t.setBirthplace ("huangshan"); sessão session = sf.getcurrentSession (); session.begIntransaction (); session.save (t); AfterClass () {sf.close ();}}Resultados brilhantes:
Vamos falar sobre o método session.delete (), ou seja, excluir:
@Test public void testDelete () {// excluir professor t = new professor (); t.setId (2); sessão session = sf.getCurrentSession (); session.begintransaction (); session.delete (t); session.gettransaction (). Commit ();};Resultados brilhantes:
Em seguida, vá para session.get (), isto é, verifique:
@Test public void testGet () {// Get Session = sf.getCurrentSession (); session.BegIntransaction (); Professor t = (professor) session.get (professor.class, 1); System.out.println ("Nome:"+t.getName ()); session.gettransaction (). Commit (); }Resultados brilhantes:
Hibernato: selecione Professor0 _._ id como column1_1_0_, professor0 _._ idade como column2_1_0_, professor0 _._ Local de nascimento como column3_1_0_, professor0 _._ nome como coluna_1_0_ de _teacher professor0_ professor 0 _._ id =? O nome é: Moluo
Vamos pegar outro método de consulta: session.load ():
@Test public void testLoad () {// Carregar sessão de sessão = sf.getCurrentSession (); session.BegIntransaction (); Professor t = (professor) session.load (professor.class, 1); System.out.println ("Nome:"+t.getName ()); session.gettransaction (). Commit (); }Resultados brilhantes:
Hibernato: selecione Professor0 _._ id como column1_1_0_, professor0 _._ idade como column2_1_0_, professor0 _._ Local de nascimento como column3_1_0_, professor0 _._ nome como coluna_1_0_ de _teacher professor0_ professor 0 _._ id =? O nome é: Moluo
Aqui, explicamos a diferença entre essas duas consultas: antes de tudo, quando o objeto a ser consulta não existe, as informações retornadas são diferentes. O método GET retornará: java.lang.nullpointerException
O método de carga retornará: org.hibernate.ObjectNotFoundException: NOROWWHTHTHEGINEDIDIEXISTISTAS
Em segundo lugar, o carregamento retorna um objeto proxy e as instruções SQL serão emitidas quando for realmente usado; Além disso, obtenha carregamentos dados diretamente do banco de dados, sem demora.
Por fim, vamos falar sobre os métodos de atualização mais usados e atualizá -los por meio de instruções HQL:
@Test public void testUpdate () {// Atualizar sessão de sessão = sf.getCurrentSession (); session.BegIntransaction (); String url = "Atualizar professor t Definir t.birthplace = 'Anhui' onde id = 1"; // Observe que o professor aqui deve ser o nome do objeto, não o nome da tabela, t é o alias da consulta do objeto Q = session.createquery (URL); // O pacote importado aqui é: importar org.hibernate.Query; q.ExecuteUpdate (); session.gettransaction (). Commit (); }Resultados brilhantes:
Através da atualização, a cidade natal de Moro foi atualizada de Huangshan para Anhui ...
De fato, existe o método de atualização de session.update (), mas esse método de atualização é apenas esse método de atualização. Se você atualizar apenas uma parte das colunas por vez, esse método de atualização atualizará todas as colunas, o que não é muito eficiente, por isso não é recomendável usá -las. Obviamente, também existem maneiras de compensar. Por exemplo, se você estiver usando o XML, poderá definir update = "false" na tag de propriedade de uma coluna que não deseja ser atualizada no arquivo de configuração; Além disso, você também pode definir atualizações dinâmicas após a classe do arquivo de configuração: dynamic update = "true"; Obviamente, se você estiver usando a anotação, poderá definir @column (update = "false"); De fato, estes não são flexíveis e o uso do HQL é o melhor; portanto, apenas o código de atualização HQL é publicado aqui.
Resumir
O exposto acima é todo o conteúdo deste artigo sobre a análise do exemplo do Hibernate de adicionar, excluir, modificar e pesquisar operações por meio da sessão. Espero que seja útil para todos. Amigos interessados podem se referir a este site:
Aprenda rapidamente sobre sessão em hibernado
Código da instância de anotação de nível de atributo Hibernato
Hibernate usa o HBM.XML para configurar a análise de relacionamento de mapeamento
Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!