Hibernate: como regresar un sólo valor que sea un tipo primitivo?

Base de datos, Java, Oracle, Programación 21 de August del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Es un poco básico pero la verdad es que es de gran ayuda, ya que si quieres regresar un date, string, long, etc. (datso primitivos) pues evitas mapear el resultado dentro de un objeto.

bueno, al grano!!! vamos a obtener el nombre del autor dependiendo del su ID

tautor.hbm.xml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
 
<hibernate-mapping>
<sql-query name="searchAutor">
	    <return-scalar  column="name" type="java.lang.String" />
    	<!-- La columna que se quiera regresar y su tipo de dato-->
    	 SELECT 
    	 	name  
    	 FROM 
    	 	tautor 
 
	  WHERE
		idautor = :id
    </sql-query>
</hibernate-mapping>

ya que tenemos el mapeo… vamos a la implementación

HTautorDao.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
public class HTautorDao extends AbstractDAO implements TautorDao
{
public String getNameAutor(Long id)
    {
        try
        {
 
            String[] paramNames =
                { "id" };
 
            Object[] values =
                { id };
          // nos regresa el tipo primitivo que queramos o con metodos que tiene DataAccessUtils
            return (String) DataAccessUtils.uniqueResult((getHibernateTemplate()
                    .findByNamedQueryAndNamedParam("searchAutor", paramNames, values)));
 
        }
        catch (Exception e)
        {
            log.fatal(e);
            return null;
        }
 
    }

así pueden tener las consultas utilizando hibernate… y regresar tipos primitivos como los antes mencionados..

NOTA: siempre y cuando sea sólo valor como resultado, por que de lo contrario estamos ablando de otra forma de hacerlo.

java doc: http://static.springsource.org/spring/docs/2.0.x/api/org/springframework/dao/support/DataAccessUtils.html#uniqueResult

Cómo ejecutar un PL desde el SQL windows on Oracle????

Base de datos, Oracle, Programación 24 de June del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Ya por último, para probar el PL que hemos creado anteriormente lo podemos ejecutar de la siguiente manera:

1
  execute BOOKSDEL_PKG.delete_book(1); // 1 es el id

Cómo crear un PL en oracle y que este dentro de Packages ???…

Oracle, Programación 24 de June del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (1 votes, average: 5.00 out of 5)
Loading ... Loading ...

Si queremos crear un PL que se encuentre dentro de Packages sólo hay que crearlo de la siguiente manera:

1.- como nombre tendrá “BOOKSDEL_PKG“…

1
2
3
4
5
CREATE OR REPLACE package BOOKSDEL_PKG AS
 
  PROCEDURE  delete_book(IDBOOK NUMBER);
 
end BOOKSDEL_PKG;

2.- y creamos el PL de la siguiente forma (body):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
CREATE OR REPLACE PACKAGE BODY booksdel_pkg
AS
   PROCEDURE delete_book (idbook NUMBER)
   IS
      CURSOR bk
      IS
         ..
 
   BEGIN
   	.
	.
	.	  
      COMMIT;
   EXCEPTION
     .
     .
     .
   END delete_book;
END booksdel_pkg;

y eso sería todo lo que se tiene que hacer!!!

Ejecutar un PL en Oracle desde Java y que muestre una posible exception para que la aplicación no continué…

Java, Oracle, Programación 2 de June del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 4.50 out of 5)
Loading ... Loading ...

Si quieres manejar la excepción de un posible error y que la maneje Java.. solo hay que agregar la siguiente linea “RAISE_APPLICATION_ERROR” y además Oracle nos permite personal izar nuestros errores…

CREATE OR REPLACE PACKAGE BODY delete_pkg
AS
   PROCEDURE delete_table (vbook NUMBER)
   IS
     .
     .
     .
   BEGIN
     .
     .
     .
     .
     COMMIT;
   EXCEPTION
      WHEN OTHERS
      THEN
         DBMS_OUTPUT.put_line (SQLERR);
	 RAISE_APPLICATION_ERROR(-20001,SQLERR);
   END delete_table;
END delete_pkg;

en Oracle, NO se puede hacer un ALTER TABLE ADD… AFTER …!!!

Base de datos, Oracle 25 de March del 2009

1 Star2 Stars3 Stars4 Stars5 Stars (2 votes, average: 5.00 out of 5)
Loading ... Loading ...

Así es, en Oracle NO se puede crear una columna después/antes que otra, por ejemplo si tuviéramos la siguiente tabla:

CREARTE TABLE Tlibros(
 idlibro NUMBER,
 titulo VARCHAR2(100),
 edicion  VARCHAR2(100)
)

y quisiéramos agregar la columna editorial entre titulo y edición… no se podría ya que en las opciones para agregar una columna no se puede utilizar AFTER… por lo cual agregaría la columna al final de las columnas. por ejemplo:

ALTER TABLE Tlibros ADD edicion VARCHAR2(100)

En cambio MySQL permite utilizar la opción AFTER. Un ejemplo

ALTER TABLE Tlibros ADD COLUMN editorial VARCHAR(60) AFTER edicion;
http://www.wikio.es BlogESfera - Directorio de Blogs Hispanos blogarama - the blog directory Mi Ping en TotalPing.com
Internet blogs Programming Blogs - Blog Catalog Blog Directory Internet blogs Buzzear (ES) Publicidad por tu blog con Boosterblog directorio de blogs
Agregar Web - Directorio de webs Directorio webs Directorio Web
Anuncios Gratis Blog Directory Technology Blogs - Blog Rankings