Coloque o diagrama de transição de três estados aqui para facilitar a função do método de análise:
1.Session save () método
A sessão é a interface mais importante entre todas as interfaces de hibernação, fornecendo métodos para salvar, atualizar, consultar e excluir dados.
O método save () da sessão pode converter estados temporários ou livres em estados persistentes. Por exemplo, salve um objeto de cliente:
SessionFactory SessionFactory; Configuration Configuration = new Configuration (). Configure (); SessionFactory = Configuration.BuildSessionFactory (); Session Session = SessionFactory.opensssion (); transação tr = session.begIntransaction (); // 1. Criar objeto de cliente CLIENTE C1 = NOVO CLIENTE (); C1.SETID (NOVO LONG (1)); C1.SETNAME ("TEST"); C1.setemail ("[email protected]"); c1.setpassword ("123456"); Chame o método de sessão save () para persistir o objeto do cliente session.Save (c1); tr.Commit (); session.close ();O método save () faz principalmente as seguintes três coisas:
(1) Coloque o objeto temporário do cliente criado por novo no cache para fazê -lo persistir.
(2) Ao mesmo tempo, de acordo com o gerador OID definido no arquivo de mapeamento de relacionamento de objeto, ou seja, o método de geração de chaves primárias gera um OID exclusivo para o objeto.
<!-Defina a chave primária-> <idname = "id" column = "id" type = "long"> <!-Método de geração de chave primária-> <generatorclass = "increment"/> </dod>
Há uma pergunta neste lugar. Ao criar um objeto, se o método setId () gera uma chave primária para a persistência do objeto. De fato, não é. O SetID não gera a chave primária conforme definido, mas gera a chave primária com base no método de geração de chaves primárias configurado no arquivo de mapeamento de relacionamento de objeto. Pode ser executado várias vezes mais, e a chave primária cresce por si só. Você pode ver vários dados do banco de dados. A chave primária começa a partir de 1, para que você possa saber que SetId ()
A chave primária não é definida, caso contrário, a verificação de singularidade de chave primária do banco de dados não será possível.
Também podemos definir manualmente o valor principal da chave. Devemos sobrecarregar o método SALVE (), usar o método de sobrecarga Salvar (C1, Newlong (1)) e defini -lo manualmente a cada vez.
(3) Planeje executar a declaração de inserção. Observe que a instrução Insert não é executada imediatamente e a instrução Insert será executada somente quando a sessão limpar o cache. TR.Commit () Commits de transação.
2.Session's update () método
Transforme objetos de estado livre em objetos persistentes. Por exemplo:
SessionFactory SessionFactory; Configuração da configuração = new Configuration (). Configure (); sessionFactory = Configuration.BuildSessionFactory (); Sessão session1 = sessionFactory.opensssion (); Transação tr1 = session1.begIntransaction (); // 1. Criar objeto de cliente cliente C1 = novo cliente (); c1.setId (novo longo (1)); c1.setName ("teste"); c1.setemail ("[email protected]"); c1.setPassword ("123456"); c1.setAddress ("paraíso"); // 2. Ligue para a sessão Salvar () Método para persistir o objeto do cliente session1.Save (C1); tr1.Commit (); session1.close (); // 3. Atualize o objeto de estado livre, encontre alterações e execute a declaração de atualização session2 = sessionFactory.opensssion (); Transação TR2 = session2.BegIntransaction (); c1.setAddress ("atualização de teste"); session2.Update (C1); tr2.Commit (); session2.close ();A atualização () da sessão deve fazer o seguinte:
(1) Adicione o objeto de cliente gratuito ao cache da sessão para se tornar um objeto persistente.
(2) Execute a instrução ATUALIZAÇÃO. Assim como o Saving () executa a instrução INSERT, ele não executa a instrução de atualização imediatamente. Quando o cache é limpo, o objeto do cliente é montado em uma instrução de atualização.
Em seguida, execute novamente.
Observe que, mesmo que o cliente não tenha alterado, por padrão, a instrução de atualização será montada quando o cache for limpo. Se precisar ser definido para alterar, o arquivo de mapeamento de relacionamento com objetos precisa ser definido.
3.Session SaveorUpdate () Método
O método saveorupdate () contém as funções dos métodos salv () e update (), e diferentes métodos são chamados de acordo com o estado do parâmetro aprovado. Passando em um objeto temporário para chamar o método save (), se passar em um objeto livre para chamá -lo
Método update (). Retorna o objeto persistente recebido. Portanto, toda vez que precisamos passar apenas no objeto, o método saveorupdate (), julgar automaticamente o estado do estado de objeto aprovado e chama dinamicamente o método de processamento.
Como esse método determina o estado do objeto de entrada? Quando qualquer uma das seguintes condições são atendidas, é um estado temporário:
(1) O OID do objeto Java é nulo, o que significa que o objeto não é instanciado de outra forma. Mesmo que seja instanciado, é um objeto que foi excluído e se torna um estado temporário depois que o estado livre é excluído. Nesse caso, o objeto é um estado temporário.
(2) Se o objeto Java tiver controle de versão e o número da versão for nulo, isso significa que não há número de versão do objeto.
(3) Personalize o interceptador, ligue para isunsAved () e retorne o valor é verdadeiro.
4. Métodos de carga da sessão () e get ()
Ambos os métodos são baseados no OID, carregando um objeto persistente no banco de dados. O objeto persistente é colocado no cache da sessão e o objeto persistente pode ser operado de acordo com diferentes necessidades.
A diferença entre os dois:
Quando não há registro correspondente no OID no banco de dados, o load () lança uma exceção e get () retorna nulo.
5. Método de delete () session ()
Delete () como o nome implica é usado para excluir registros correspondentes aos objetos Java do banco de dados.
delete () Se um objeto persistente for passado, monte uma declaração de exclusão e execute a exclusão; Se um objeto de estado livre for passado, o Hibernate primeiro associa o estado livre à sessão, se tornará um estado persistente e depois gera a declaração de exclusão.
Executar exclusão.
Todos são executados apenas quando o cache da sessão é limpo.
As execuções acima são todas um objeto, correspondendo a um registro.
Você pode usar session.delete ("FromCustomerwhere ..."); Para excluir vários dados após adicionar condições.
SessionFactory SessionFactory; Configuração da configuração = new Configuration (). Configure (); sessionFactory = Configuration.BuildSessionFactory (); Sessão session1 = sessionFactory.opensssion (); Transação tr1 = session1.begIntransaction (); // 1. Criar objeto de cliente cliente C1 = novo cliente (); c1.setId (novo longo (1)); c1.setName ("teste"); c1.setemail ("[email protected]"); c1.setPassword ("123456"); c1.setAddress ("paraíso"); // 2. Ligue para o método Salvar () de sessão para persistir o objeto do cliente session1.Save (C1); tr1.Commit (); session1.close (); // 3. Associe o objeto de estado livre à sessão, limpe o cache após a persistência e execute a declaração de exclusão; Coloque -o no estado persistente para excluí -lo diretamente; Sessão session2 = sessionFactory.opensssion (); Transação TR2 = session2.BegIntransaction (); session2.Delete (C1); tr2.Commit (); session2.close (); Resultado da execução, saída do console:
Hibernato: Selecione Max (id) dos clientes
Hibernate: insert into CUSTOMERS (NAME, EMAIL, PASSWORD, PHONE, ADDRESS, SEX, IS_MARRIED, DESCRIPTION, IMAGE, BIRTHDAY, REGISTERED_TIME, ID) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
Hibernate: Exclua dos clientes onde ID =?
Resumir
O exposto acima é toda a explicação detalhada da sessão Adicionar, exclusão, modificação e código de operação de pesquisa em Hibernate, espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!