que - javabeans pdf
¿Qué es exactamente un JavaBean? (14)
Con respecto a la segunda parte de su pregunta, la serialización es un mecanismo de persistencia utilizado para almacenar objetos como una secuencia de bytes firmados. Dicho de manera menos formal, almacena el estado de un objeto para que pueda recuperarlo más tarde, mediante la deserialización.
Entendí, creo, que un "Bean" es una clase de Java con propiedades y getters / setters. Por lo que entiendo, es el equivalente de una estructura C ¿Es eso cierto?
Además, ¿existe una diferencia sintáctica real entre un bean y una clase regular? ¿Hay alguna definición especial o una interfaz?
Básicamente, ¿por qué hay un término para esto?
Edición : Si puede ser tan amable y agregar información con respecto a la interfaz Serializable
, y lo que significa, para su respuesta, estaría muy agradecido.
Encontrará la serialización útil cuando implemente su proyecto en múltiples servidores, ya que los beans se conservarán y se transferirán a través de ellos.
Explicación con un ejemplo.
1. import java.io.Serializable
En cuanto a la serialización, ver la Serializable .
2. campos privados
Los campos deben ser privados para evitar que las clases externas modifiquen fácilmente esos campos. En lugar de acceder directamente a esos campos, usualmente se utilizan métodos de obtención / establecimiento.
3. Constructor
Un constructor público sin ningún argumento.
4. getter / setter
Métodos de getter y setter para acceder a campos privados.
/** 1. import java.io.Serializable */
public class User implements java.io.Serializable {
/** 2. private fields */
private int id;
private String name;
/** 3. Constructor */
public User() {
}
public User(int id, String name) {
this.id = id;
this.name = name;
}
/** 4. getter/setter */
// getter
public int getId() {
return id;
}
public String getName() {
return name;
}
// setter
public void setId(int id) {
this.id = is;
}
public void setName(String name) {
this.name = name;
}
}
Hay un término para que suene especial. La realidad está lejos de ser tan misteriosa.
Básicamente, un "Bean":
- es un objeto serializable (es decir, implementa Serializable , y lo hace correctamente), que
- tiene "propiedades" cuyos captadores y definidores son solo métodos con ciertos nombres (como, por ejemplo,
getFoo()
es el que obtiene para la propiedad "Foo"), y - tiene un constructor público 0-arg (por lo que puede crearse a voluntad y configurarse configurando sus propiedades).
Actualizar:
En cuanto a Serializable
: eso no es más que una "interfaz de marcador" (una interfaz que no declara ninguna función) que le dice a Java que la clase implementadora consiente (e implica que es capaz de) "serialización", un proceso que convierte una instancia en un flujo de bytes. Esos bytes se pueden almacenar en archivos, enviarse a través de una conexión de red, etc., y tener suficiente información para permitir que una JVM (al menos, una que sepa sobre el tipo del objeto) reconstruya el objeto más tarde, posiblemente en una instancia diferente del Aplicación, o incluso en otra máquina!
Por supuesto, para hacer eso, la clase tiene que cumplir con ciertas limitaciones. La principal de ellas es que todos los campos de instancia deben ser tipos primitivos (int, bool, etc.), instancias de alguna clase que también sea serializable o marcadas como transient
para que Java no intente incluirlas. (Por supuesto, esto significa que transient
campos transient
no sobrevivirán al viaje a través de un flujo. Una clase que tenga campos transient
debe prepararse para reinicializarlos si es necesario).
Una clase que no puede cumplir con esas limitaciones no debería implementar Serializable
(y, IIRC, el compilador de Java ni siquiera lo dejará hacerlo).
Java Beans es un estándar, y sus requisitos básicos de sintaxis han sido explicados claramente por las otras respuestas.
Sin embargo, IMO, es más que un simple estándar de sintaxis. El significado real o el uso previsto de Java Beans es, junto con varias herramientas compatibles con el estándar, para facilitar la reutilización de código y la ingeniería de software basada en componentes, es decir, permitir a los desarrolladores crear aplicaciones mediante el ensamblaje de componentes (clases) existentes y sin tener que escribir Código (o solo hay que escribir un pequeño código de pegamento). Desafortunadamente, esta tecnología está muy subestimada y subutilizada por la industria, lo que puede explicarse a partir de las respuestas en este hilo.
Si lees el tutorial de Oracle sobre Java Beans , puedes entenderlo mejor.
Java Beans utiliza menos código y más enfoque de trabajo ... Java Beans se utiliza en todo Java EE como un contrato universal para el descubrimiento y el acceso en tiempo de ejecución. Por ejemplo, JavaServer Pages (JSP) utiliza Java Beans como objetos de transferencia de datos entre páginas o entre servlets y JSP. JavaBeans Activation Framework de Java EE utiliza Java Beans para integrar el soporte para tipos de datos MIME en Java EE. La API de administración de Java EE usa JavaBeans como la base para la instrumentación de recursos que se administrarán en un entorno Java EE.
Acerca de la serialización:
En la serialización de objetos, un objeto se puede representar como una secuencia de bytes que incluye los datos del objeto, así como información sobre el tipo del objeto y los tipos de datos almacenados en el objeto.
Después de que un objeto serializado se haya escrito en un archivo, se puede leer del archivo y deserializar, es decir, la información de tipo y los bytes que representan el objeto y sus datos se pueden usar para recrear el objeto en la memoria.
Los JavaBeans son clases de Java que se adhieren a una convención de codificación extremadamente simple. Todo lo que tienes que hacer es
- Implementar la interfaz java.io.Serializable - Para guardar el estado de un objeto
- usar un constructor de argumentos vacío público - Para instanciar el objeto
- Y proporcione métodos públicos de captador y definidor: para obtener y establecer los valores de las variables privadas (propiedades).
Para comprender JavaBean, debe observar lo siguiente: JavaBean es un material conceptual y no puede representar una clase de cosas específicas.
JavaBean es una herramienta de desarrollo que se puede visualizar en la operación de componentes de software reutilizables
JavaBean se basa en la especificación Sun JavaBeans y puede ser componentes reutilizables. Su característica principal es la reutilización.
Propiedades de JavaBeans
Un JavaBean es un objeto Java que satisface ciertas convenciones de programación:
La clase JavaBean debe implementar
Serializable
oExternalizable
La clase JavaBean debe tener un constructor sin argumentos
Todas las propiedades de JavaBean deben tener métodos setter y getter públicos.
Todas las variables de instancia de JavaBean deben ser privadas
Ejemplo de JavaBeans
@Entity
public class Employee implements Serializable{
@Id
private int id;
private String name;
private int salary;
public Employee() {}
public Employee(String name, int salary) {
this.name = name;
this.salary = salary;
}
public int getId() {
return id;
}
public void setId( int id ) {
this.id = id;
}
public String getName() {
return name;
}
public void setName( String name ) {
this.name = name;
}
public int getSalary() {
return salary;
}
public void setSalary( int salary ) {
this.salary = salary;
}
}
Según la Wikipedia:
La clase debe tener un constructor público predeterminado (sin argumentos). Esto permite una fácil creación de instancias dentro de marcos de edición y activación.
Las propiedades de la clase deben ser accesibles usando get, set, is (se pueden usar para propiedades booleanas en lugar de get), y otros métodos (los llamados métodos de acceso y métodos mutadores) de acuerdo con una convención de nomenclatura estándar. Esto permite una fácil inspección y actualización automatizada del estado del bean dentro de los marcos, muchos de los cuales incluyen editores personalizados para varios tipos de propiedades. Los instaladores pueden tener uno o más de un argumento.
La clase debe ser serializable. [Esto permite que las aplicaciones y los marcos guarden, almacenen y restauren de forma confiable el estado del bean de una manera independiente de la VM y de la plataforma.]
Para más información siga este link.
Son serializables, tienen un constructor de argumento cero y permiten el acceso a las propiedades mediante los métodos de obtención y establecimiento. El nombre "Bean" se dio para abarcar este estándar, cuyo objetivo es crear componentes de software reutilizables para Java. according to
wiki
Los objetos que forman la columna vertebral de su aplicación y que son administrados por el contenedor Spring IoC se denominan beans. Un bean es un objeto que está instanciado, ensamblado y gestionado por un contenedor Spring IoC. De lo contrario, un bean es simplemente uno de los muchos objetos en su aplicación. according to
primavera io .
Un Java Bean es esencialmente una clase, lo que clasifica una clase como un bean es: 1. Debe implementar una interfaz serializable (una interfaz de marcador). 2. El constructor debe ser público y no tener argumentos (lo que otras personas lo llaman un constructor sin argumentos). 3. Debe tener getter y setters.
Es bueno tener en cuenta que el campo serialVersionUID es importante para mantener el estado del objeto. El siguiente código califica como un bean:
public class DataDog implements java.io.Serializable {
private static final long serialVersionUID = -3774654564564563L;
private int id;
private String nameOfDog;
//The constructor should NOT have arguments
public DataDog () {}
/** 4. getter/setter */
// getter(s)
public int getId() {
return id;
}
public String getNameOfDog() {
return nameOfDog;
}
// setter(s)
public void setId(int id) {
this.id = id;
}
public void setNameOfDog(String nameOfDog) {
this.nameOfDog = nameOfDog;
}}
Un Java Bean es una clase java [conceptual] que debe seguir las siguientes convenciones:
- Debe tener un constructor sin argumentos.
- Debe ser serializable.
- Debe proporcionar métodos para establecer y obtener los valores de las propiedades, conocidos como métodos de obtención y establecimiento.
Es un componente de software reutilizable. Puede encapsular muchos objetos en un solo objeto para que se pueda acceder al mismo objeto desde múltiples lugares y sea un paso hacia el fácil mantenimiento del código.
Un JavaBean es solo un estándar
- Todas las propiedades son privadas (usar getters/setters )
- Un constructor público sin argumentos.
- Implementos
Serializable
.
Eso es. Es sólo una convención. Muchas bibliotecas dependen de ello sin embargo.
Con respecto a Serializable
, a partir de la Serializable de la Serializable :
La serialización de una clase está habilitada por la clase que implementa la interfaz java.io.Serializable. Las clases que no implementen esta interfaz no tendrán ninguno de sus estados serializados o deserializados. Todos los subtipos de una clase serializable son ellos mismos serializables. La interfaz de serialización no tiene métodos ni campos y sirve solo para identificar la semántica de ser serializable.
En otras palabras, los objetos serializables se pueden escribir en secuencias y, por lo tanto, en archivos, bases de datos de objetos, cualquier cosa realmente.
Además, no existe una diferencia sintáctica entre un JavaBean y otra clase; una clase define un JavaBean si sigue los estándares.
Hay un término para eso porque el estándar permite que las bibliotecas hagan cosas programáticamente con instancias de clase que defina de una manera predefinida. Por ejemplo, si una biblioteca quiere transmitir cualquier objeto que pase a ella, sabe que puede hacerlo porque su objeto es serializable (suponiendo que la biblioteca requiere que sus objetos sean JavaBeans adecuados).