Обычно вредоносные сайты используют так называемые Drive-by Downloads , чтобы вы могли загрузить свои эксплойты в вашу систему. С этого момента они часто используют удаленное выполнение кода для чтения и записи данных с вашего ПК. Это может быть в случае с вами.
Поскольку он загружал только файл .JS, вы можете безопасно проверить его с помощью текстового редактора в вашей текущей системе. Вы также можете попытаться найти эксплойт, который использовал ту же технику, в Exploit-DB или выполнить поиск соответствующего кода в Google. Хотя лучше всего было бы использовать hexdump на виртуальной машине и попытаться выполнить обратный инжиниринг, чтобы увидеть, что он делает, если вы не можете найти больше информации о коде.
I apologize again for this question. I'm very surprised at how hibernate works, it's really cool. I didn't think it would do all of this automagically, and I really wasn't even sure what I was trying to ask. As I responded to comments I started to refine the question in my head and was able to then find the answer I was looking for. Thanks to everyone who helped.
The answer is: hibernate does this automatically.
Suppose you have in your database table A with a primary key "id", and a table B that has a primary key called "a_id" that references table A.
So you create the following classes (abbreviated):
public class A {
private String aProperty;
// ... getter and setter, etc
{
public class B extends A {
private String bProperty;
// ... getter and setter, etc
}
Then map them like so:
<hibernate-mapping>
<class name="A" table="a" catalog="testokdelete">
<id name="id" type="java.lang.Integer">
<column name="id" />
<generator class="identity" />
</id>
<property name="aProperty" column="a_property"/>
<joined-subclass name="B" table="b">
<key column="a_id"/>
<property name="bProperty" column="b_property"/>
</joined-subclass>
</class>
</hibernate-mapping>
And you can return A and B objects using a simple "from A" query, as in the following code:
Query query = session.createQuery("from A");
List<Object> objects = query.list();
for (Object object: objects) {
System.out.print("A property: ");
System.out.print(((A)object).getAProperty());
System.out.print(", B property: ");
System.out.println( (object.getClass() == B.class) ? ((B)object).getBProperty() : "not a B");
}
All it does is return a list of objects using the query "from A", and then walks through them printing out aProperty from our A class and, if the class is of type B, the bProperty from our B class.
The hibernate query in this case is automatically polymorphic and will give you a B object when appropriate.
Вы можете использовать RTTI с instanceof, но это не объектно-ориентированное.
Вместо этого укажите базовый класс, A
метод, который относится к каким дополнительным a B
соответствует, например, если A
является Заказчиком
и B
является PreferredCustomer
, способ может быть isPreferredCustomer ()
.
В A
метод возвращает false, в B
он возвращает true.
Важно отметить, что мы не спрашивать, принадлежит ли объект определенному классу; мы задаем бизнес-вопрос, спрашиваем объект, может ли он что-то сделать. Это тонкое, но важное различие.
В частности, это означает, что ваш код ниже выиграл
Хорошо, хорошо, я собираюсь предположить, что ваши классы отображаются правильно. Я думаю, что если вы сделали это, то сможете сделать следующее:
public List<A> getAllClassA(){
Session session = HibernateUtil.getSession();
Criteria criteria = session.createCriteria(A.class);
List<A> ret = criteria.list();
return ret;
}
Если вы не знакомы с критериями, это довольно просто подобрать. Этот фрагмент кода извлечет все объекты класса A из базы данных. Если вы правильно настроили карту, я думаю, что Hibernate также будет поддерживать атрибуты B ваших объектов A, если они на самом деле являются объектами B (извините, если это сбивает с толку).
Дайте мне знать, если это вы искали или если вам нужен код для HibernateUtil.